YourKit Java Profiler簡単レポート

Personal Licenseの販売期間が終わってから,こんなレポート書いても何の役にもたたんかも.:-D

インストール

Windowsの場合,dllをパスに通す.LinuxSolarisの場合,ライブラリをLD_LIBRARY_PATHに指定する.後は,測定したいJVMの起動オプションに-Xrunyjpagent:xxxを指定するだけ.これで監視エージェントが起動する.

WindowsおよびSolarisWebLogicで試してみたけど,どちらもあっという間に設定完了.
CPUプロファイリングしないで単にエージェント起動させてるだけなら,あんまり負荷はかかってないみたい.

設定

設定箇所はあんまりない.
モニタ側は,監視エージェントのホスト名とポート番号を指定するだけ.
JProbe使ったときは,モニタ側にも「やれクラスパスはどこだ」みたいな指定をしたんだけど,YourKitはそんな設定はいらんかった.とにかく全部測定するみたい.
あとはモニタ側でフィルタリングせいってのがコンセプトのようだ.


IDE統合も簡単.IDEAと統合したんだけど,IDEA側にモニタしているアプリのプロジェクトが開いてあれば,YourKitでモニタしているクラスのソースをIDEAから参照できる.
あとIDEAのRun/DebugメニューのStartup/Connectionタブに「Profile」って項目が出来上がってた.
多分,YourKitでモニタしながら実行できるんだろうけど,IDEAから実行するようなプロジェクト作ってなかったんで未評価.
#あいにくRemoteデバッグしか使わないもんで...

CPUプロファイル

メソッドの呼び出し回数をカウントしないサンプリングモードと,呼び出し回数をカウントするメソッドトレースモードの2種類がある.

前者の場合は,プロファイリングによる性能劣化はあんまり気にならない.
後者だと目測で10倍くらいの性能劣化が起こる.


モニタのレポート画面はOptimizeItやNetBeans Profiler風(JProbeのモニタ画面って正直見づらかったんで,こっちのほうが良いね).
レポート画面はHTML形式でエクスポート可能で,OptimzieItと変わんない.

メモリプロファイル

もともとYourKitってメモリプロファイラだったから,こっちが本命の機能なのかも...


こちらもCPUプロファイル同様,簡単なプロファイルと詳細なプロファイルの2種類がある.
前者は,現在JVMにロードしてるオブジェクトの数とサイズ(bytes)を計測し,後者はそれプラス,計測中に呼び出したメソッドでアロケートしたオブジェクトの数もカウントする.
後者を測定するとべらぼうに性能劣化する.


レポートの見方は,ただいま勉強中.:-D
#ちょとよくわからんのじゃ.

おまけ

モニタはネットワーク越しでエージェントを監視できるんだけど,なんらかの理由でモニタが使えない場合,自分でモニタプログラムが作れるようAPIが公開されている(それとサンプルも).
こんときライセンスってどうなるんだろ?
なんとなくライセンスはモニタ(GUI)にだけ適用されているように思えるから,なくても動きそうだ.


ちなみにエージェントはライセンスファイルが無くても動く.でもって測定結果はエージェントが吐き出すんで,リモートでモニタリングしてる場合,測定結果はいちいちFTPとかでとってこないとレポートを表示できないのじゃ.
localhostの場合は,勝手に連携してくれてるみたい.

まとめ

YourKit購入に踏み切った理由はただひとつ.「Solarisに対応してる」ってこと.
Windowsだけで良いんだったら,JProbeEclipse Profilerでも十分だと思う.
あとIDEAと統合できるってのと,4.0からMac OS Xになるってのもミソね.
#青田買いだな.


んでYourKit.Personal License(\7,200)だったらすげーお買い得.Commercial License(\41,410)だとあんまりお買い得感はないかも.


Solarisでも使えるって点で敵はNetBeans Profilerなんだけど,あっちはプロファイラの設定よかプロジェクトの設定で挫折したから,まだなんとも言えない.NetBeans4.1待ちだろう.