在OutOfMemoryException之前不久转储Java堆?

时间:2012-12-20 21:47:55

标签: java profiling heap out-of-memory

  

可能重复:
  Java VisualVM Enable Heap Dump on OOME

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

2 个答案:

答案 0 :(得分:5)

您可以使用-XX:+ HeapDumpOnOutOfMemoryError

答案 1 :(得分:0)

如果你真的想在内存不足之前转储堆,你可以添加一个定期轮询内存使用情况的工作线程(参见freeMemory)。当您开始耗尽内存时,您将转储堆。

有关如何从应用程序中转储堆的信息,请参阅https://blogs.oracle.com/sundararajan/entry/programmatically_dumping_heap_from_java