方法的线程对某事件增加监听,需要不断运行,发现触发一回内存增加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();
}
}
相关代码
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();
}
}
最后说句,你的类名取的很有个性,呵呵
默认是200k
Thread(ThreadGroup group, Runnable target, String name, long stackSize)
分配新的 Thread 对象,以便将 target 作为其运行对象,将指定的 name 作为其名称,作为 group 所引用的线程组的一员,并具有指定的堆栈大小。