JProfilerの最新バージョンがサポートしている機能には、動的測定("dynamic instrumentation")、ロック履歴グラフ、例外的メソッド実行分析などがある。JProfilerを開発している企業であるej-technologiesは最近、このJavaアプリケーション・プロファイリング・ソフトウェアのバージョン6.0をリリースしたと発表した。このツールはまた、モニタープロファイリングやスレッドダンプビューも可能にしている。
動的測定のための自動チューニング機能は、過度なオーバーヘッドがあるメソッドを見つけ出し、JProfilerのGUI上からそれらを取り除くように示唆する。実行時間が短く、何度も呼び出されるメソッドによって数値全体が影響を受ける。これらのメソッドの実行時間を測定する時間は、実際のメソッドの実行時間よりもはるかに長くかかるからだ。新しいバージョンでは、プロファイリングを行っている間にこのようなオーバーヘッドが多発する場所をステータスバーで通知してくれるので、開発者は実行に時間がかかっているメソッドに集中することができる。
例外的メソッド実行機能は、選択されたメソッドの最も長くかかった実行時間を詳細に分析するのに役に立つ。これらはメソッド実行時間のうち、最も時間のかかったものだ。通常、あるメソッドは大量の呼び出しを通じて同じようなパフォーマンスを示すのだが、時々通常以上に時間がかかることがある。このような場合に呼び出しツリーを調べても意味がない。通常の呼び出しの方が、時間のかかる呼び出しよりもはるかに多いからだ。そこで、コールツリービューやメソッド統計ビューにおいてあるメソッドを例外的メソッドとしてマークすることにより、コールツリーにおいて最も時間のかかった呼び出しが別に表示されるようになる。
JProfiler 6の新機能には、他に以下のものがある。
ロックグラフ:
JProfilerのモニタによる分析が拡張され、現在のロック状況および、記録された全てのロック状況の履歴を示すグラフが加わった。最新ロックグラフビューにより、現在待ち状態にあるかブロックされている全てのスレッドは、競合モニタに表れるものと同じようにモニタ上に示される。デッドロックは赤色のノードとして可視化され、ツールチップにより時間とスタックトレースが表示される。
ロック履歴グラフでは、モニタイベントを記録し、記録されたロック状況を1ステップずつたどることもできる。タイムラインビューはイベントの分布にコンテキストを与えることで、他のモニタイベントへと遷移するための別の方法を提供する。
スレッドダンプビュー:
新しいスレッドダンプビューは、プロファイル対象のクラスだけでなく全ての呼び出しフレームを表示する。これにより同じスレッド上に留まりながら、スタックトレース上の変更を見るために、異なるスレッドダンプを見て回ることができる。この機能は複数のスレッドダンプをサポートしており、各スレッドやスレッドダンプ全体がクリップボードにコピーできるようになった。
モニタプロファイリング:
モニタイベントはかなりの数になると思われるが、特定のスレッドやモニタを注目するノードとしてマークすることができる。別々に分けられたナビゲーションボタン群は注目するノードを少なくとも1つは含むイベントを段階的に追いかけることになる。このモニタイベントは、タイムライン中の特定の領域を選択することによって集積することができる。スタックトレース一覧と同じく、ブロック時間と待ち時間の総計も、ロックグラフの矢印に表示されるツールチップに表示される。モニタイベントの記録はJProfiler MBeanか制御APIによって開始および終了することができる。
メソッド統計ビュー:
このビューではメソッド実行時間の分布に関する統計的なデータを表示する。ここには「異常値係数("outlier coefficient")」と呼ばれる、最も時間がかかった呼び出しがどの程度メジアン値から外れているかを示す数値も含まれている。ビューの下部において、呼び出し時間の分布も表示される。ここではy軸が対数的に設定され、単一の異常値がより明確に示されるようになっている。
ツリーマップビュー:
ツリーマップビューモードは全てのビューに追加されているが、これは所要時間に比例した四角形としてコールツリーを表示するものだ。四角形にマウスを乗せることでメソッドの情報を見ることができ、特定の領域をより詳細に見るために拡大することもできる。コールトレーサのためのスタックトレース情報も追加されている。コールトレーサの各トレースにおいては現在のスタックトレースがウィンドウ下部に表示され、選択されたトレースのコンテキストを評価するのがより容易になっている。
JavaSE5以上を使用するJavaアプリケーションであれば、プロファイリングのコンフィグレーションは"-agentpath"とよばれるVMパラメータだけで行うことができる。新しいリリース版ではJava6以上に対してJVMを再起動せずにプロファイル設定を変更する機能と、IDE統合機能からスナップショットをロードする機能をサポートしている。IDE統合機能がサポートするものには、Netbeans 6.8(Glassfish v3のプロファイリングも同時にサポートする)と、IntelliJ Idea 9がある。このプロファイリングはJBoss 5.1や、Oracle Weblogic 11g上でも使用できる。
最新リリース版がサポートするプラットフォームには新たにFreeBSD x86とLinux PPC OSが加わっている。これは32ビットと64ビットどちらのJVMにも対応している。