在已经崩溃的系统上进行堆转储

时间:2012-03-27 13:32:55

标签: java tomcat memory-leaks out-of-memory heap-dump

由于内存泄漏,我的tomcat应用程序崩溃了。 我想在崩溃的系统/ jvm上进行堆转储。 可能吗?我正在使用windows / tomcat 6 怎么样?

4 个答案:

答案 0 :(得分:4)

该过程不再存在。所以没有堆转储。 下次使用'-XX:+ HeapDumpOnOutOfMemoryError'。

答案 1 :(得分:3)

您可以在运行时通过以下方式获取堆转储:

jmap -dump:live,format = b,file = heap.dump

答案 2 :(得分:1)

如果您的应用程序没有响应但JVM仍在跛行,您可以尝试使用JConsole并触发堆转储。在link

上搜索堆转储

答案 3 :(得分:1)

您无法在不再运行的进程上获取堆转储。下次启动Tomcat时,您将不得不首先编辑名为catalina.sh的/ bin目录中的文件,以便它包含在内存不足时自动转储堆的选项。

您需要做的是编辑JAVA_OPTS变量,使其包含您需要的JVM选项。因此,在文件顶部附近,创建JAVA_OPTS之后,您需要执行类似

的操作

JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError"

您也可以使用JConsole进行堆转储,但为了做到这一点,您需要大致了解Tomcat内存不足的时间,以便堆转储帮助您诊断问题。