HHeLiBeXの日記 正道編

日々の記憶の記録とメモ‥

Javaのスレッドやメモリ関連で最近よく使用しているツールメモ

このところ、Javaのスレッドやヒープメモリ関連の問題に悩まされているので、その手の調査ツールをよく使用する。
そんなわけで(謎)、お気に入りのツールたちのメモ。

侍 - ログ , スレッドダンプ解析ツール
私自身は主にjavacoreの調査に使用しているが、「侍 はタブ表示できる GUI の tail ツールです。」ということで、UNIXのtailコマンドと同じことができたり、またスレッドダンプを可視化したり、verbosegcログをグラフ表示したりできる。
昔、WAS上で動作するアプリが無応答になる原因を調査したときにも使用していたが、このツールデッドロックしているスレッドにどくろマークが付くので、「あ、どくろちゃん出たっ!」などと言いながら調査をしていた記憶が‥思い出したくない記憶だけど‥

SendSignal

SendSignal
javacoreを採取する際に、コマンドラインから起動したJava VMならば、Ctrl+Breakをキーボードから入力すればよいのだが、そうでない起動方法をしている場合に困る、ということで、このツール
これは、指定したプロセスにCtrl+Breakシグナルを送信する、ただそれだけ。

IBM Pattern Modeling and Analysis Tool for Java Garbage Collector

IBM Pattern Modeling and Analysis Tool for Java Garbage Collector
verbosegcログの解析やヒープメモリの使用状況の分析などに使用できるツール
GCの実行状況を表で見たりグラフ化したりできるので、問題となっている箇所を見つけやすい。
テキストファイルをそのままの状態で追っていても疲れるだけだしね。

HeapAnalyzer

IBM HeapAnalyzer
Javaヒープのメモリリークの疑いがあるオブジェクトを発見するためのグラフィカルツール、と説明されているが、もちろん普通にヒープダンプの内容を参照することが可能なツール
主な機能としては、オブジェクト一覧、オブジェクトツリー表示、オブジェクトクラス名検索、等々。ツリー表示は、オブジェクトの参照元を親、参照先を子とみなしたツリーとなる。親、子はひとつではないから、同一のオブジェクトがツリーの複数の箇所に出現するのが普通だが、アイコンで一応区別は付くようになっている。
個人的には、もう少し検索機能が強力であればなぁ、と思うところ。