由于内存泄漏,我的tomcat应用程序崩溃了。 我想在崩溃的系统/ jvm上进行堆转储。 可能吗?我正在使用windows / tomcat 6 怎么样?
答案 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内存不足的时间,以便堆转储帮助您诊断问题。