Java 在生成堆时进行堆转储

Java 在生成堆时进行堆转储,java,memory-leaks,heap,Java,Memory Leaks,Heap,在我的Java应用程序中,当我从脚本的OutputStream读取时,会生成一个堆转储文件。我确信我的应用程序中存在内存泄漏。但是,即使在生成堆转储之后,导致内存泄漏的线程也不会出现。我没有在run方法中捕获可丢弃、异常、错误等 我想知道当我没有指定任何特殊的VM参数时,什么时候会生成堆转储文件 -XX:+HeapDumpOnOutOfMemoryError 好吧,heapdump只有在您指定该选项时才会自动生成,至少在Oracle的JVM中是这样(我不知道其他的,但我怀疑它们是自动生成的)

在我的Java应用程序中,当我从脚本的
OutputStream
读取时,会生成一个堆转储文件。我确信我的应用程序中存在内存泄漏。但是,即使在生成堆转储之后,导致内存泄漏的线程也不会出现。我没有在run方法中捕获可丢弃、异常、错误等

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

-XX:+HeapDumpOnOutOfMemoryError

好吧,heapdump只有在您指定该选项时才会自动生成,至少在Oracle的JVM中是这样(我不知道其他的,但我怀疑它们是自动生成的)

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

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