【问题标题】:How to create Heap Dump automatically when Java process Hits OutOfMemory Error?Java进程Hits OutOfMemory Error时如何自动创建堆转储?
【发布时间】:2016-04-13 14:42:30
【问题描述】:

我有 Java 程序在 Linux 平台上运行,它经常崩溃;在这种情况下,我想自动进行 heapdump。

有没有人有脚本/方法可以在 Linux 上的 Java 进程遇到“OutOfMemory 错误”时自动创建堆转储?

感谢您的帮助。

【问题讨论】:

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


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      查看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 中引入。)

      【讨论】:

        【解决方案3】:

        Oracle 文档中所述:

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

        【讨论】:

          猜你喜欢
          • 2023-03-05
          • 1970-01-01
          • 1970-01-01
          • 2012-06-22
          • 1970-01-01
          • 2011-07-18
          • 2011-02-03
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多