堆转储何时生成

时间:2011-10-04 15:43:18

标签: java memory-leaks heap

在我的Java应用程序中,当我从脚本的OutputStream读取时,会生成堆转储文件。我确信我的应用程序中存在内存泄漏。但即使在生成堆转储之后,导致内存泄漏的线程也不会出现。我没有在run方法中捕获Throwable,Exception,Error等。

我想知道当我没有指定任何特殊的VM参数时会生成堆转储文件,例如

-XX:+HeapDumpOnOutOfMemoryError

1 个答案:

答案 0 :(得分:2)

AFAIK,只有在你指定该选项时才会自动生成heapdumps,至少在Oracle的JVM中是这样(不知道其他的,但我怀疑他们是自动完成的。)

在大多数情况下,您必须手动触发堆转储生成。

还有一些方法可以以编程方式创建堆转储,但这些方法是特定于JVM的,并且取决于程序员调用它们的方式和时间。如果使用该选项,那么你必须寻找它,因为它可能在任何地方。