2012-03-27 38 views

回答

1

你不能得到一个在不再运行的进程上堆转储。下次启动Tomcat时,必须首先编辑名为catalina.sh的/ bin目录中的文件,以便它包含用于在内存不足时自动转储堆的选项。

您需要做的是编辑JAVA_OPTS变量,以便包含您需要的JVM选项。所以靠近文件顶部,JAVA_OPTS创建后,你需要做这样的事情

JAVA_OPTS="$JAVA_OPTS -XX:+HeapDumpOnOutOfMemoryError"

你也可以采取堆使用JConsole的转储,但为了做到这一点,你需要大致知道当Tomcat的内存不足以使堆转储帮助您诊断问题时。

4

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

+0

这意味着我需要等到下一次崩溃:( – 2012-03-27 14:01:22

+0

是的,它的确没有。 – Jon 2012-03-27 14:42:10

1

如果您的应用程序没有响应,但JVM仍然徘徊,您可以尝试使用JConsole并触发堆转储。搜索堆转储这个link

3

您可以通过在运行时获得堆转储:

JMAP转储:现场,格式= B,文件= heap.dump