/home/by-natures/dev*

データ界隈で働くエンジニアとしての技術的なメモと、たまに普通の日記。

ヒープダンプやプロファイルを見るのに jvisualvm が便利

以前の記事で JMX へ接続するためのクライアントとして、jconsole を紹介しました:

dev.bynatures.net

この後作業していて、jvisualvm というコマンドでもヒープダンプを見ることができると知り、そちらの方が便利だったので紹介します。

詳しい紹介記事

www.javaworld.com

少し古い記事ですが分かりやすかったです。以下のことが書かれていました:

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 アプリケーションが立ち上がります:

f:id:bynatures:20160922023018p:plain

適当なアプリケーションに繋いでみました。jconsole よりカラフルで見やすいですね。タブで表示されるので、複数アプリケーションまとめて見ることもできます。

f:id:bynatures:20160922023856p:plain

以下の画面は、サンプラによってどのオブジェクトがどれだけ生成されているかを確認しているところです。

f:id:bynatures:20160922023939p:plain

JConsole でも可能ですが、jvisualvm でもその場で GC 実行・ヒープダンプの取得が行えます。