java readline()内存溢出问题

redwu99 2007-06-18 06:04:34
我有这样的一个方法:
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]);我运行完后还刻意把一些对象释放了。我百思不得其解,请高手指点是什么原因,或者有什么别的方法
...全文
925 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
redwu99 2007-06-19
  • 打赏
  • 举报
回复
谢谢楼上
bluerosehero 2007-06-18
  • 打赏
  • 举报
回复
呵呵,你这样做等于把一个文件全部放到内存当中,文件大占用内存就大.
redwu99 2007-06-18
  • 打赏
  • 举报
回复
这个Hashtable我定义的是一个静态变量,我是把文件中的一些信息放在了Hashtable中,因为程序运行的过程中我要用到,那请问有什么解决方法,或者别的方式能让内存占用低一些。
joejoe1991 2007-06-18
  • 打赏
  • 举报
回复
新手 没看明白你在干啥
ChDw 2007-06-18
  • 打赏
  • 举报
回复
你还是把对象全部Put到Hashtable中了,这个当然是很大!Put进去的对象是不会释放的

62,623

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧