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

4

我在Linux平台上运行Java程序时经常会遇到崩溃的情况,此时我希望能够自动生成堆转储文件。

有人有脚本/方法可以在Linux上Java进程遇到"OutOfMemory Error"时自动创建堆转储文件吗?

非常感谢您的帮助。

3个回答

7
要自动获取Heap Dump文件,需要编辑{安装目录}/bin/setenv.sh,并在JAVA_OPTS中添加以下内容:

-XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=[Heap Dump文件的路径]


注意:请确保按照格式要求进行编辑,不要删除或修改任何HTML标签。

4
请查看此页面, 了解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版中引入.)


0
Oracle文档所述:

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接