各位大哥,兄弟问一下:方法的线程对某事件增加监听,需不断运行,事件触发一回内存增加200k,请问该怎么做降低内存?流了什么了用过都及时关了
方法的线程对某事件增加监听,需要不断运行,发现触发一回内存增加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();
}
}
------解决方案--------------------JVM不会那么快回收内存的,程序没看出什么问题。难道这程序会最终会out of memory吗?
最后说句,你的类名取的很有个性,呵呵
------解决方案--------------------有参数可以设置线程堆栈大小的
默认是200k
Thread(ThreadGroup group, Runnable target, String name, long stackSize)
分配新的 Thread 对象,以便将 target 作为其运行对象,将指定的 name 作为其名称,作为 group 所引用的线程组的一员,并具有指定的堆栈大小。