0

可能重复:
Java VisualVM 在 OOME 上启用堆转储

我有一个由于 OOME 而崩溃的应用程序。我想在应用程序崩溃前不久创建一个堆的转储文件。我之前使用jdump过几个小时运行后分析堆,但没有发现任何可疑之处。我可以在一些 Eclipse 分析器中运行该应用程序。是否有某种方法可以在 OOME 被抛出到具有正常(或 jdk)安装的服务器上之前不久创建堆转储?

4

2 回答 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 回答