我有一个因OOME而崩溃的应用程序。我想在App崩溃之前不久创建堆的转储文件。之前我使用jdump
来分析运行几个小时后的堆,但没有发现任何可疑之处。我可以在一些Eclipse分析器中运行该应用程序。是否有一些方法可以在使用普通(或jdk)安装的服务器上抛出OOME之前不久创建堆转储?
答案 0 :(得分:5)
您可以使用-XX:+ HeapDumpOnOutOfMemoryError
答案 1 :(得分:0)
如果你真的想在内存不足之前转储堆,你可以添加一个定期轮询内存使用情况的工作线程(参见freeMemory)。当您开始耗尽内存时,您将转储堆。
有关如何从应用程序中转储堆的信息,请参阅https://blogs.oracle.com/sundararajan/entry/programmatically_dumping_heap_from_java。