せてぃーずノート

Javaのイベント参加レポートとかを書いたりします。

解析ツールバトルをまとめてみた

とても面白かったので自分なりに整理してみました。
間違っているかもしれないので、そこら辺は大目に見ていただけると・・・。

まとめ

どのツールも高機能かつ低負荷だなぁという印象でした。
「プロファイリングツールは重い、開発でしか使えない」と時代ではなさそうです。

「なにか起きてから調べるために使用するのではなく、最初から仕込んでおいて何か起きた時の情報を取得する」ことがこれからのスタンダードになるといいですね。

ざっくり比較表

項目 FlightRecorder ENdoSnipe HeapStat
長所・得意分野 起動中のJVM情報を残さず記録。データを表示するためのビューも充実している。 可視化だけではなく診断の機能を備える。 名前の通り、ヒープの状態監視に特化。外部ツールでありながらオーバーヘッドが小さい。
ビューへのこだわり MissonControlの綺麗なViewに加え、Eclipseプラグインも提供。 この中で唯一のWeb。診断結果の表示が分かりやすそう。 クラス階層が簡単に見られる。
JVMへのオーバーヘッド 3%~5%くらい 具体的な数値は出なかったが、運用で使用するモードあり。 3.5~4.5%
弱点 有償ツールである。 導入にPostageとTomcatが必要。(改善予定) 対応するプラットフォームが少ない
今後の展開 まずはHotSpotの統合が優先 JavaだけではなくLinuxやDB、Hadoopの監視もできるようにする。 パフォーマンスの向上。RaspberryPIで動くようにしたい。

独断と偏見に基づいた

どのツールも高性能なので、プロジェクトに合わせて吟味すればいいと思います。

  • FlightRecorder

現状だとWebLogicでしか使えないと思われる。
WebLogicじゃない場合は諦めるしかないのかも。

あまりJavaのディープな知識がなくても使えそう。
いわゆる業務SEが多いプロジェクトならこの中ではこれ一択かも。
導入するためのサーバが必要というハードルがクリアできるならとりあえず味見しても良さそう。

  • HeapStat

これらのツールの中では一番玄人向け。
対応しているプラットフォームが少ないのが泣き所か。