在我的Java应用程序中,当我从脚本的OutputStream
读取时,会生成堆转储文件。我确信我的应用程序中存在内存泄漏。但即使在生成堆转储之后,导致内存泄漏的线程也不会出现。我没有在run方法中捕获Throwable,Exception,Error等。
我想知道当我没有指定任何特殊的VM参数时会生成堆转储文件,例如
-XX:+HeapDumpOnOutOfMemoryError
答案 0 :(得分:2)
AFAIK,只有在你指定该选项时才会自动生成heapdumps,至少在Oracle的JVM中是这样(不知道其他的,但我怀疑他们是自动完成的。)
在大多数情况下,您必须手动触发堆转储生成。
还有一些方法可以以编程方式创建堆转储,但这些方法是特定于JVM的,并且取决于程序员调用它们的方式和时间。如果使用该选项,那么你必须寻找它,因为它可能在任何地方。