关于线程运行几次后内存上升问题,请各位达人相帮
TGITCIC Java领域优质创作者 博客专家认证 2008-05-29 02:21:53 我有两个线程
WorkThread
WatchThread
都是
extends Thread面来
WorkThread
{
读1000条记录,插入数据库
}
WatchThread{
While(TotalRecord<0){
if (WorkThread== null || !WorkThread.isAlive()) {
WorkThread= new WorkThread
WorkThread.start();
WorkThread.join();
try{
WorkThread.interrupt();
}catch(Exception e){ }
WorkThread= null;
}
}
}
我已经在WorkThread里排查过了,没有任何内存等问题,内存值是平线
问题出在WatchThread上
每次While循环里的一个workthread做完后,再new一个workthread时,内存就会上升10MB
每个WorkThread做10000条数据导入,TotalRecord-10000,
如果TotalRecord=50000,正好这个线程运行完,内存上涨了50MB
我在linux下的tomcat里运行的,监视内存用的是top命令
看到TOMCAT的进程的 res值做完10000条,开始new一个新的workthread时就涨10MB。
问题时,我不是已经interrupt和=null了吗?而且此时我已经监测过workthread在join()命令后确实是已经运行完了
不是说JAVA在线程自己正常结束时会被自动销毁吗?难道不是?