Java/スレッドダンプ

Last-modified: 2008-10-02 (木) 15:53:35
  • スレッドダンプ
    • 動作中のスレッドスタックをスナップショットとして取得することができる
  • スレッドダンプの取得方法
    • Java VMのプロセスに、特定のシグナル(SIGQUIT)を送る。(※Winの場合は、Ctrl+Break)
      1. JavaプロセスIDを取得する。
      2. そのプロセスIDに対して、SIGQUITを送る。
      3. その際、標準出力をリダイレクトすること。
  • 参考サイト

スレッドダンプの見方

まずはスレッドダンプのあっさりとした見方

以下にスレッドダンプと、その解釈を示します。

Thread-01
スタックトレース
- locked <xxxxxxx> (a javaのクラス)

Thread-01は、javaのクラスのロックを獲得している。ロック対象のオブジェクトは、xxxxxxx。

Thread-02
スタックトレース
- waiting to lock <xxxxxxx> (a javaのクラス)

Thread-02は、スタックトレースを待っていて、その対象オブジェクトはxxxxxxxであり、Thread-01のロック開放待ちであることがわかる。