Javaスレッドダンプとは何か知りたいです。スレッド ダンプとは何か、またそれが実行中の Java プログラムとどのように関連しているかを理解するのを手伝ってくれませんか?
4 に答える
Java スレッド ダンプは、特定の時点で JVM 内のすべてのスレッドが何を行っているかを調べる方法です。これは、負荷がかかっているときに Java アプリケーションが時々ハングするように見える場合に特に役立ちます。ダンプを分析すると、スレッドがスタックしている場所が示されるからです。
Unix/Linux
を実行することkill -QUIT <pid>
でスレッド ダンプを生成できます。Windows
Ctl + Break
JVM からスレッド ダンプを取得する方法については、こちらを参照してください。
スレッド ダンプの作成方法については、こちらを参照してください。
http://www.javasanity.org/understandingthreaddumpsから:
スレッドダンプは、ある時点で実行されているものの正確なスナップショットです。
スレッドダンプを理解/分析するのに役立つリソースはたくさんあります(たとえば、http://www.javacodegeeks.com/2012/03/jvm-how-to-analyze-thread-dump.html)。
また、次の質問が役立つ場合があります。スレッドダンプ分析ツール/メソッド
「スレッドダンプは、Java仮想マシン(JVM)で現在アクティブになっているすべてのJavaスレッドのリストです。」(リンク)
通常、このリストのスレッドは、現在のスタックトレースとスレッドの状態(実行中、一時停止中、ロック済みなど)で表されます。
スレッドダンプは、プログラムが失敗した時点での呼び出しスタックの状態の出力です。これにより、プログラムが何をしていたか(およびその理由)が正確に示されるため、プログラムで問題が発生したことがわかります。
確認する必要のあるスレッドダンプはありますか?