ej-technologiesがJProfiler 7.0をリリースした。JProfilerはJava SE/EEのプロファイリングツールで、CPUやメモリ、スレッドのプロファイリングやVMの稼働状況の測定が可能である。バージョン7.0では以下のような機能が新たに追加された。
- JDBCやJMS、JNDI、サーブレット、ファイル、ソケット、プロセスのビルトインプローブ。
- APIとJProfiler GUIのダイレクト構成を使ったカスタムプローブ。
- java.util.concurrentパッケージのExecutorやAWT、SWT、スレッドのための、コールツリービューのリクエストトラッキング機能。
- ヒープウォーカーのインスペクションビュー。
- ヒープウォーカーの参照ビューの、プリミティブ値参照やフィルタリング。
- いくつかのヒープウォーカービューでの、オブジェクトのtoString()の結果の表示。
- ヒープウォーカーの参照ビュー、グラフビューの設計見直し。
- コールツリービューの履歴機能。
- コーツルリービューでの、長時間動いているAWTイベントの分析。
- JProfilerでスクリプトを作成し、"スクリプト"トリガーアクションを設定可能。
- スレッド履歴ビューでスレッドグループの名前を表示可能。
- モニター履歴ビューでの総行数やカラムでのフィルタリング。
- アタッチモードで、スレッド作成の記録が可能。
- NetBeansインテグレーションは、32ビットと64ビットの混在をサポートするために、JProfilerをスタンドアロンで走らせる。
- WebSphere 8のためのインテグレーションウィザード。
JProfilerにJDBCやJMS、JNDI、サーブレット、ファイル、ソケット、プロセスのためのビルトインプローブが追加された。これは様々なサブシステムから得たデータを記録、分析するために使われる。プローブには生存期間の長いオブジェクトを表示するためのタイムラインビューが備えられている。データベース接続を例にとると、アイドル状態の期間やSQLを実行している期間、バッチトランザクションを実行している期間などがタイムラインに表示される。また、プローブにはスレッドやスタックトレース情報を保持したイベントを表示するための、イベントビューも備えられている。例えば、JDBCプローブにはデータベース接続確立やクエリ実行のイベントが表示される。他にも、プローブにはオブジェクトの詳細や統計情報を見ることのできるオブジェクトビューや、最も時間がかかっているメソッド呼び出しの表示などに使うことのできるホットスポットビュー、測定値をグラフィカルに表示することのできるテレメータービューなどのビューがある。これらのビルトインプローブは、JProfilerのセッションの設定でカスタマイズすることができる。
JProfilerはカスタムプローブもサポートしており、カスタムプローブを開発し、プロファイリング対象のアプリケーションと一緒にデプロイするためのAPIや、JProfiler GUIを使ってカスタムプローブを定義することができる、カスタムプローブウィザードを提供している。ウィザードでは、インスペクションしたいメソッドを指定し、インスペクション対象メソッドが呼び出された時に実行される"インスペクションスクリプト"を作成できる。JProfilerには、インスペクションスクリプトの作成を補助するため、コード補完などをサポートするコードエディタが備わっている。カスタムプローブは、プロファイリング対象のアプリケーションを再起動せずに追加や変更が可能である。さらに、特定のメソッドが呼び出された時にコードを実行することができる、スクリプトトリガー実行機能もこのリリースで追加されており、単純なカスタムプローブの代わりにこの機能を使うことができる点にも注目して欲しい。
JProfilerには、並列アプリケーションやマルチスレッドアプリケーションのプロファイリングをより容易にする、リクエストトラッキングのコンセプトも導入されている。リクエストトラッキングは異なるスレッド間の呼び出し側と呼び出された側とを関連付け、コールツリービューから参照できるようにする。 この機能は例えば、同期タスクが完了するまでにどのくらい時間がかかったか、非同期タスクがどこから実行されたかなどを調べるのに使うことができる。Executorやスレッドの開始イベント、AWTやSWTのイベントは全てリクエストトラッキングで追跡できる。
JProfilerのヒープウォーカーも機能拡張されている。
- 参照ビューや被参照ビューでオブジェクト一覧を見ることができるようになった。また、参照ビューではプリミティブデータを直接確認することができるようになった。
- オブジェクトグラフは、カレントオブジェクトセットに依存しない分離ビューとなり、オブジェクトの追加や削除、選択したオブジェクト間のパス検索ができるようになった。
- 参照ビューでフィルタを適用し、選択された参照チェーンのプリミティブ値を限定したり、スクリプトでフィルタをかけることができるようになった。
- 参照ビューで、オブジェクトのtoString()を評価し、その値を表示できるようになった。
- カレントオブジェクトセットの様々な調査を行うことができる、インスペクションビューが追加された。例えば、重複した文字列やプリミティブラッパー、重複した配列、ほとんどの要素がnullの配列や空の配列、適切に実装されていないhashCode()を持った型をキーとしているハッシュマップ、弱い参照を持ったオブジェクト、多くのオブジェクトから参照されているオブジェクト、自分自身への参照を持っているオブジェクトなどを探し出すことができる。また、カスタムフィルタも利用可能である。
標準ライセンスの価格は、開発者1人当たり499USドルからとなっている。また、10日間のトライアルバージョンも用意されている。サポート付きの古いJProfilerを持っている場合は、無料でライセンスキーのアップグレードが可能である。サポート切れの場合は、アップグレードを購入する必要がある。
オープンソースのプロダクトでJProfilerに替わるものとしては、Java VisualVMがある。商用プロダクトでは、YourKitやJProbeが挙げられる。
JProfiler 7.0のより詳細な情報については、JProfilerの新製品紹介や更新履歴のページを参照して欲しい。