我有一个由于 OOME 而崩溃的应用程序。我想在应用程序崩溃前不久创建一个堆的转储文件。我之前使用jdump
过几个小时运行后分析堆,但没有发现任何可疑之处。我可以在一些 Eclipse 分析器中运行该应用程序。是否有某种方法可以在 OOME 被抛出到具有正常(或 jdk)安装的服务器上之前不久创建堆转储?
问问题
256 次
2 回答
5
您可以使用 -XX:+HeapDumpOnOutOfMemoryError
于 2012-12-20T21:50:13.777 回答
0
如果您真的想在内存不足之前转储堆,您可以添加一个工作线程来定期轮询内存使用情况(请参阅freeMemory)。当您开始耗尽内存时,您转储堆。
有关如何从应用程序中转储堆,请参阅https://blogs.oracle.com/sundararajan/entry/programmatically_dumping_heap_from_java 。
于 2012-12-20T22:22:55.537 回答