我一直在尝试在使用 Jmap 的给定 Java 进程上发生 OutOfMemoryError 时转储堆文件。
我已经能够转储堆文件,但我想将 HeapDumpOnOutOfMemoryError 标志添加到 Jmap,但我认为我做错了什么。难道我做错了什么?我试过了:
jmap -J-XX:+HeapDumpOnOutOfMemoryError -dump:live,file=/home/eduardo2/dumpfile.hprof 18763
当我运行上面的内容时,它只是说以下内容——但它不会等待 OutOfMemoryError:
>> Dumping heap to /home/eduardo2/dump21file.hprof ...
>> Heap dump file created
最佳答案
你混淆了两种不同的东西:
jmap
从正在运行的进程中捕获堆转储。见 https://docs.oracle.com/javase/7/docs/technotes/tools/share/jmap.html 。 -XX:+HeapDumpOnOutOfMemoryError
的 java 进程上使用 OOM
。如果发生异常,则会将转储写入当前目录。见 https://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/clopts.html#gbzrr 关于java - 使用 Jmap 在 OutOfMemoryError 上转储 Java 堆文件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52979300/