前回からJava SE 6u7で提供されることになった管理ツールVisualVMについて紹介しています。
前回はアプリケーションへの接続,ヒープ,スレッドなどの監視について紹介しました。しかし,先週紹介した範囲は,見せ方は異なるものの,やはりJDKに付属している管理ツールのjconsoleでも監視することが可能です。
今回はjconsoleでは提供されない機能について紹介していきます。どんな機能かというと,プロファイラです。
プロファイラはパフォーマンスチューニングには無くてはならないツールです。また,メモリーリークなど障害対策でもよく使用されます。
VisualVMでは以下の2種類のプロファイルが可能です。
- CPU
- Memory
CPUプロファイルでは,メソッドの実行に要した時間やメソッドコールの回数などを解析することができます。
一方のMemoryプロファイルはオブジェクトの個数やサイズ,また世代(GCを経てきた回数)などを解析することができます。
それぞれのプロファイルの使い方について,紹介していきます。
なお,VisualVMはローカルで動作するアプリケーションのプロファイルのみに対応しています。残念ながら,現状ではリモートホストで動作するアプリケーションをプロファイルすることができません。