如何在Java进程遇到OutOfMemory错误时自动创建堆转储?

时间:2016-04-13 14:42:31

标签: java linux jvm out-of-memory heap-dump

我在Linux平台上运行Java程序并且经常崩溃;在这种情况下,我想自动使用heapdump。

当Java进程遇到" OutOfMemory Error"有没有人自动创建堆转储的脚本/方法在Linux上?

感谢您的帮助。

3 个答案:

答案 0 :(得分:5)

要自动进行堆转储,请编辑{installation directory} /bin/setenv.sh并将其添加到JAVA_OPTS:

-XX:+ HeapDumpOnOutOfMemoryError -XX:HeapDumpPath = [堆转储路径]

答案 1 :(得分:3)

查看this page的JVM选项,具体来说:

  

-XX:HeapDumpPath =。/ java_pid.hprof 堆转储的目录或文件名的路径。管理。 (在1.4.2更新12,5.0更新7中引入。)

     

-XX:-HeapDumpOnOutOfMemoryError 在抛出java.lang.OutOfMemoryError时将堆转储到文件。管理。 (在1.4.2更新12,5.0更新7中引入。)

答案 2 :(得分:0)

Oracle文档中所述:

  

-XX:+ HeapDumpOnOutOfMemoryError 命令行选项告诉HotSpot VM在无法满足Java堆或永久代的分配时生成堆转储。运行此选项没有任何开销,因此它对于OutOfMemoryError需要很长时间才能浮出水面的生产系统非常有用。