如何在使用HashMap时处理内存不足异常

时间:2014-05-30 20:25:59

标签: java collections map garbage-collection hashmap

我正在使用HashMap,一次存储1000个条目。在处理记录之后,我调用clear()方法并为相同的HashMap引用加载1000个新条目。我必须为2,000,0000条记录执行相同的过程。买入后只买750,000,它给我带来了线程中的异常" ThreadedStreamConsumer" java.lang.OutOfMemoryError:Java堆空间。

我也尝试了WeekHashMap,但它也没有为我工作。处理这个问题的有效方法应该是什么?

1 个答案:

答案 0 :(得分:0)

我猜内存泄漏与HashMap无关,但与其他地方有关。 您可以通过分析堆转储找到泄漏的位置。

为了指示JVM在OutOfMemoryError-XX:+HeapDumpOnOutOfMemoryError参数添加到java命令行时生成堆转储。

获得堆转储后,使用VisualVM或您选择的任何其他分析器加载它。 这样您就可以找到对象保存对已处理记录的引用的内容,并修改您的程序以防止这种情况发生。