日期:2014-05-20  浏览次数:21140 次

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进去的对象是不会释放的
------解决方案--------------------
新手 没看明白你在干啥