2 newerdragon newerdragon 于 2015.05.28 16:31 提问

listFiles 大数据量时内存溢出

描述:
获取一个文件集合,通过文件获取文件名集合,再根据文件内容筛选文件,存储在Map里
问题:
文件服务器A文件夹下,存在近7万个文件,以XML格式存储,调用listFiles,再做put操作时,
内存就会溢出,调整过eclipse的堆与非堆内存,加大了1024M,也同样抛出内存溢出异常,
恳请大家指点迷津,给个好的解决方案,或者案例参考,谢谢了

    这个方法需要将内容存储在Map对象内然后返回这个Map对象,给其他成员调用,这个内存溢出,因该是在Map对象 put 的时候就hold不住了 

4个回答

caozhy
caozhy   Ds   Rxr 2015.05.28 16:37

文件内容不要全部存内存,用完的就释放掉。

newerdragon
newerdragon 我这边只做put,不做使用
接近 3 年之前 回复
newerdragon
newerdragon 这个方法需要将内容存储在Map对象内然后返回这个Map对象,给其他成员调用,这个内存溢出,因该是在Map对象 put 的时候就hold不住了
接近 3 年之前 回复
u011376884
u011376884   2015.05.28 16:40
newerdragon
newerdragon 现在状况是 这个方法需要将内容存储在Map对象内然后返回这个Map对象,给其他成员调用,这个内存溢出,因该是在Map对象 put 的时候就hold不住了
接近 3 年之前 回复
newerdragon
newerdragon   2015.05.28 16:44
这个方法需要将内容存储在Map对象内然后返回这个Map对象,给其他成员调用,这个内存溢出,因该是在Map对象 put 的时候就hold不住了 
edouardzyc
edouardzyc   2015.05.28 16:45

内存溢出的话 你得及时把文件吐出去啊,内存只留符合条件的文件Path不用把内容都放在map里啊

Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!