java readline()内存溢出问题
我有这样的一个方法:
public static void readSysNum(String file) {
InputStreamReader isr = null;
BufferedReader br = null;
try {
isr = new InputStreamReader(new FileInputStream(
file));
br = new BufferedReader(isr);
String buf = null;
SystemNumHash = new Hashtable();
String[] bufs ;
while ((buf = br.readLine()) != null) {
bufs = buf.split( ", ");
SystemNumHash.put(bufs[0] + bufs[1], bufs[2] + ", " + bufs[3]);
}
//2007/06/04用完输入流将流关闭
br.close();
isr.close();
br=null;
isr=null;
// 用完了把buf,bufs释放掉
buf = null;
bufs = null;
System.gc();
} catch (IOException e) {
log.error( "in readSystemNum readSysNum() e====> " + e);
}
}
当我程序运行起来后,我用Jbuilder2005的Optimize查看内存情况,最后内存占用率高都指向SystemNumHash.put(bufs[0] + bufs[1], bufs[2] + ", " + bufs[3]);我运行完后还刻意把一些对象释放了。我百思不得其解,请高手指点是什么原因,或者有什么别的方法
[解决办法]
你还是把对象全部Put到Hashtable中了,这个当然是很大!Put进去的对象是不会释放的
[解决办法]
新手 没看明白你在干啥
[解决办法]
呵呵,你这样做等于把一个文件全部放到内存当中,文件大占用内存就大.