Javaプロファイラの最新となる2013バージョンをリリースするにあたって,YourKitがもっとも重視しているのは,ハイレベルデータ収集機能の改善である。いわゆるJ2EEハイレベルプロファイリングで同社が意図しているのは,単にタイミング情報を提供するのではなく,論理的な処理状況を把握可能にすることだ。
SQL文,JNDIコール,JSP呼び出しといったハイレベルプロファイリングに必要なデータは,一般にプローブと呼ばれるものを使って収集する。前バージョンでは,これらのプローブが,バイトコードの再変換を使ってコードにアタッチされたり,取り外されたりしていた。このプロセスは相当な負荷を伴うと同時に,「クラス再変換 (class retransformation)」という,対象のVMで無効に設定することも可能な機能を必要としていた。
2013バージョンでは,プローブはコードに常時アタッチされるようになった。その代わりにアクティベーションとデアクティベーションを,プローブ内部の簡単なチェックでコントロールですることができる。
さらにオーバーヘッドを削減するため,プローブ状態の変更は即時に有効になる。
プローブにはon,off,autoの3つの状態がある。autoでは,CPUプロファイルモードの場合にプロファイルがアクティブになる。
代表的な新機能であるPerformance Chartは,プローブが収集したデータの視覚化と相関化を行うものだ。例えば,CPUの高負荷とデータベース呼び出し,あるいはメモリ消費とサーブレットコール数などの相関関係を抽出することができる。このようなハイレベルの分析は,詳細レベルの情報を扱うプロファイラではなく,通常ならばAPMツールが備えるものだが,システムのどの部分に相互作用が存在するのかを探る上では,よい出発点となるだろう。
CPUプロファイリングには,設定項目が追加されている:
- getterやsetterのように,通常は対象外であるメソッドも取り付けが可能になった。
- 1ミリ秒以下で実行されるメソッドについても,UIで選択的に表示できるようになった。
メモリプロファイルにも追加項目がある:
- Dateのような単純なオブジェクトやプリミティブ型のラッパに対して,それに対応する値が表示される。これによって内包する値を調べるためのドリルダウンが不要になり,分析作業がスピードアップする。
- 自己参照がオブジェクトツリーに展開されることがなくなた。これにより,誤って再帰参照をドリルダウンすることが防止される。
当然ながらJava 8に対しては,デフォルトメソッドのプロファイルをサポートするように拡張が行われている。また,すべてのIDEに対して,新バージョンを対象とする統合がサポートされている。TestNGを使用した既存のテストも簡単にプロファイルできるようになった。
YourKitの価格は開発者単位で499ドル,フローティングライセンス単位では2,499ドルである。購入後1年以内のアップグレードは無償,それ以降は40%のディスカウントが適用される。