2014-08-29 92 views

回答

-1

如果您的意思是線程轉儲是javacore。 Javacore是正在運行的java進程的快照。它包括JVM命令行,環境和加載的庫。它提供了線程所有正在運行的線程,它們的堆棧跟蹤和監視器(鎖)的快照。還有垃圾收集歷史和內存信息。

如果您需要解決OutOfMemory(OOM)問題,則需要分析使用java堆內存顯示創建對象的heapdump文件。找到導致OOM的對象後,可以匹配哪個線程可以生成該對象。

您還可以閱讀這篇文章http://www.javacodegeeks.com/2012/03/jvm-how-to-analyze-thread-dump.html

+1

「javacore」....? – eis 2014-08-29 06:13:19

+0

在IBM JRE世界中,線程轉儲是javacore – mbsau 2014-08-29 06:15:25

+0

啊,它確實[看起來是這樣](http://publib.boulder.ibm.com/infocenter/dmndhelp/v6r2mx/index.jsp?topic=/com.ibm.websphere。 wps.620.doc/DOC/rtroub_capture_java_core.html)。你會每天學到新的東西。 – eis 2014-08-29 06:16:41

1

Java進程在任何時間點的線程轉儲是當時所有線程在那個jvm中正在做什麼的快照。

,你可以使用一些工具像jstack得到threaddump

不知道,如果你能找到的線程轉儲OOM的真正原因,因爲它通常會告訴你什麼線程正在做什麼(用於解決死鎖的一種比較有用的問題),但它可能仍然有助於考慮什麼過程正在等待。

線程轉儲不顯示java進程正在消耗多少內存,而是堆轉儲將幫助您更多。從中你可以發現哪些對象正在消耗大量的內存。

生成內存轉儲,您可以使用jmap

你也可以用這個你的java程序連接到一個分析器像jvisualvm

你可以在實時分析你的java進程的CPU和內存使用情況。 您也可以使用它生成線程轉儲和堆轉儲。

*所有這三個工具都帶有jdk,你不需要安裝任何東西。

相關問題