我有这样的一个方法:
    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]);我运行完后还刻意把一些对象释放了。我百思不得其解,请高手指点是什么原因,或者有什么别的方法

解决方案 »

  1.   

    你还是把对象全部Put到Hashtable中了,这个当然是很大!Put进去的对象是不会释放的
      

  2.   

    这个Hashtable我定义的是一个静态变量,我是把文件中的一些信息放在了Hashtable中,因为程序运行的过程中我要用到,那请问有什么解决方法,或者别的方式能让内存占用低一些。