方法的线程对某事件增加监听,需要不断运行,发现触发一回内存增加200k,请问该怎么做降低内存?流了什么了用过都及时关了 问了好几个人,他们不知道,因此特向大家请教 
相关代码 
public class XianChengDuQu extends Thread //从温湿度文件中读取内容 
{ XianChengDuQu(String mulu)//mulu为文件所在目录,a为起始文件名 

this.mulu=mulu; 
thread=new Thread(this); 
sjk=new ShuJuKuLianJie(0,0,0,0,"前半小时",0); } public  void  run() 
{ while (true) 
{ if(f.exists())//触发一回内存增加200k { 
try 

// sjk=new ShuJuKuLianJie(0,0,0,0,"前半小时",0); 
cryuju=new String("insert into dbo.wsd2 values(?,?,?)"); 
ps=sjk.con.prepareStatement(cryuju); 
ps.setString(1, str1);//具体时间 
ps.execute(); 

catch (SQLException e) 

// TODO Auto-generated catch block 
e.printStackTrace(); 


try 

br.close(); 
fr.close();            //关闭流 

catch (IOException e1) 

// TODO Auto-generated catch block 
e1.printStackTrace(); 
} f.renameTo(new File(mulu,shijian+".txt"));//文件改名 } 

try 

sjk.con.close();//关闭数据库 

catch (SQLException e) 

// TODO Auto-generated catch block 
e.printStackTrace(); 

try 
{ thread.sleep(2000); 

catch (InterruptedException e) 

// TODO Auto-generated catch block 
e.printStackTrace(); 

// System.gc(); 

} private void setText(String cgqbh2) { 
// TODO Auto-generated method stub } 
public static void main(String[] args) 

XianChengDuQu xc=new XianChengDuQu("C:\\温湿度数据"); 
xc.thread.start(); 

}

解决方案 »

  1.   

    JVM不会那么快回收内存的,程序没看出什么问题。难道这程序会最终会out of memory吗?
    最后说句,你的类名取的很有个性,呵呵
      

  2.   

    有参数可以设置线程堆栈大小的
    默认是200k
    Thread(ThreadGroup group, Runnable target, String name, long stackSize) 
    分配新的 Thread 对象,以便将 target 作为其运行对象,将指定的 name 作为其名称,作为 group 所引用的线程组的一员,并具有指定的堆栈大小。