2012-03-27 49 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