以前の記事で JMX へ接続するためのクライアントとして、jconsole を紹介しました:
この後作業していて、jvisualvm
というコマンドでもヒープダンプを見ることができると知り、そちらの方が便利だったので紹介します。
詳しい紹介記事
少し古い記事ですが分かりやすかったです。以下のことが書かれていました:
Fortunately, two of the main features JMX developers were likely to use in JConsole can be used with VisualVM as well.
基本的には上位互換のツールのようです。上記記事では JConsole の MBean の機能を、プラグインを追加することで対応できるとあります。JMX に特化した JConsole とは違って汎用的な作りになっているようです。
jvisualvm は JDK 6 Update 7 から JDK 標準で付属します。開発は jvisualvm の方が後で、より高機能のようです。CPU, メモリのプロファイリングなども行え、どのメソッドが何回呼ばれているかなども確認することができます。
使い方
起動は jconsole と同様にコマンドライン上で、引数なしで叩きます:
$ jvisualvm
すると、GUI アプリケーションが立ち上がります:
適当なアプリケーションに繋いでみました。jconsole よりカラフルで見やすいですね。タブで表示されるので、複数アプリケーションまとめて見ることもできます。
以下の画面は、サンプラによってどのオブジェクトがどれだけ生成されているかを確認しているところです。
JConsole でも可能ですが、jvisualvm でもその場で GC 実行・ヒープダンプの取得が行えます。