使用 Jmap 在 OutOfMemoryError 上转储 Java 堆文件
Dumping Java Heap File on OutOfMemoryError using Jmap
我一直在尝试使用 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。
- 在您希望抛出
OOM
的 java 进程上使用 -XX:+HeapDumpOnOutOfMemoryError
。如果发生异常,则会将转储写入当前目录。参见 https://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/clopts.html#gbzrr
我一直在尝试使用 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。 - 在您希望抛出
OOM
的 java 进程上使用-XX:+HeapDumpOnOutOfMemoryError
。如果发生异常,则会将转储写入当前目录。参见 https://docs.oracle.com/javase/7/docs/webnotes/tsg/TSG-VM/html/clopts.html#gbzrr