我阅读了关于解决这个问题的这个stackoverflow页面,并尝试添加命令行选项-XX:-UseGCOverheadLimit和“-Xmx”参数。然而,我的程序仍然抛出了内存不足错误。
该程序将大量(> 40,000个键)单词保存到MultiKeyMap中,并在具有足够内存的服务器上运行。
你有任何关于如何避免此错误的建议吗?
该程序将大量(> 40,000个键)单词保存到MultiKeyMap中,并在具有足够内存的服务器上运行。
你有任何关于如何避免此错误的建议吗?
-XX:+HeapDumpOnOutOfMemoryError
JVM标志。当发生OutOfMemoryError
时,这将生成内存的二进制转储。然后可以使用诸如Eclipse MAT之类的工具对其进行分析,以确定可能存在的内存泄漏,并帮助解释为什么垃圾收集器很难清除对象。-XX:-HeapDumpOnOutOfMemoryError
是关闭状态并且是默认选项。要开启它,您需要使用 -XX:+HeapDumpOnOutOfMemoryError
。在文档中,它总是显示默认选项,这意味着如果您复制该选项,则不应执行任何操作。(在我看来非常令人困惑)您必须将“-”切换为“+”,反之亦然才能实现某些功能。 - Peter Lawrey