JProfiler – 性能ボトルネックを特定できる解析ツール

今日のIT 業界では、ソフトウェア製品をリリースする際、または本番環境に移行する前に、スケーラビリティ、性能、CPU やメモリ使用量など、知っておきたいいくつかのパラメーターが存在します。エンタープライズ向けアプリケーションやウェブ アプリケーションの性能上の問題の多くは、メモリ (ガベージ コレクター) またはデータベース アクセスに起因します。

JProfiler は、性能ボトルネック、メモリ リーク、CPU 負荷などを分析し、スレッドの問題を解消できる、Java の開発者やテスターにとって非常に便利な解析ツールです。 JProfiler は、スタンドアロンのアプリケーションとしても、また Eclipseソフトウェア開発環境ではプラグインとしても使えます。JProfiler のインターフェイスは使いやすく、そもそも解析ツールが必要となった原因をすばやく追究すべく、アプリケーションやリークの可能性に関するパフォーマンス統計を表示します。

適切なツールなくしては、メモリ リークの検出は困難です。JProfiler のヒープ ウォーカーは、単純なものから複雑なものまでメモリの問題を解決するのに役立ちます。JProfiler では、解析データをセクションごとに分かれたビューとしてオーガナイズできます。JProfiler のメイン ウィンドウ左手には、ビュー セレクターがあります。ビューの各セクションには、現行のオブジェクト セットの異なる側面を表示する多数のビューが存在し、メモリ ビュー、CPU ビュー、ヒープ ウォーカー、スレッド ビュー、モニター ビュー、テレメトリ ビューなどがあります。JProfiler の記録機能を選択することにより、特定のプロセスのライブ メモリや CPU を記録できます。

JProfiler では、ローカルとリモートの 2 つの異なるタイプの解析ができます。ローカル解析では、JProfiler がインストールされているマシン上で実行中のアプリケーションを解析します。リモート解析では、JProfiler がインストールされていないリモート マシン上で実行中の Java アプリケーションを解析します。JProfiler のオフライン解析機能では、GUI をフロントエンドで起動することなくコマンドラインから解析セッションを実行できます。JProfiler には、コマンドライン ツールの jpenable があり、解析エージェントを読み込んで別のマシンからリモート セッションに接続することができます。解析エージェントはソケットを使って JProfiler の GUI と通信します。JProfiler はいずれの情報も解析することができ、ユーザーはアクティブな全バイト数、インスタンス、スレッド、クラス、ガベージ コレクターのアクティビティなどをライブ表示で即座に確認できます。

Java 解析ツールのうち、開発者やテスターにとっては JProfiler が最も役に立ちます。

解析ツールには、3 つの基本的な側面があります。タイム解析 (“time profiling”) ではメソッド レベルでアプリケーションの実行パスを評価し、メモリ解析 (“memory profiling”) ではどのメソッドがメモリを最も多く確保しているかなど、ヒープ領域について知ることができます。アプリケーションの多くはマルチスレッドであり、スレッド解析 (“thread profiling”) ではスレッド同期の問題を分析します。JProfiler ではタイム、メモリ、スレッド解析を単一のアプリケーションにまとめられており、この 3 つのドメインからのデータを比較し、相関できます。

JProfiler は、Windows、Linux、Solaris、AIX、FREEBSD、HP-UXのプラットフォームでサポートされています。Eclipse や IntelliJ などの異なる IDE とも統合できます。

JProfiler を起動すると、クイックスタート ダイアログが表示され、アプリケーションの解析に役立つ多数のショートカットが含まれています。スタート センターの [New Session] タブでは、統合ウィザードと手動構成ダイアログの両方が利用できます。

[Telemetry] ビューでメモリの空きおよび使用領域を表示


インスタンス数の最も多いオブジェクトを表示

実際のタスクに費やされる時間は全体のほんの一部に過ぎず、見つけにくいのに対し、スレッドを待機させているメソッドに大半の時間が費やされます。必要な微調整は、スレッド ステータスのコンセプトのもとで行われます。JProfiler には、”Runnable”、“Waiting”、
“Blocking”、“Net I/O” の 4 つのスレッド ステータスがあります。また、現行の解析データのスナップショットをディスクに保存できます。複数のスナップショットにおいて、何が変更したかを比較し、確認できます。あるいは、コマンドライン比較ツールや比較の ant タスクを使用して、プログラム上で比較レポートを作成することもできます。開発過程において、潜在的な問題点にアクセスできるよう、アプリケーションに開発ツールを走らせることは優れた方法であるといえます。性能とメモリのボトルネックを認識することで、プロジェクトの進行段階で設計上の意思決定に柔軟性を持たせることができ、リエンジニアリングを回避することでコスト削減にもつながります。

JProfiler の特長

  1. 非常に使い勝手が良い。
  2. 豊富なビューとフィルタリングのオプションがあり、必要な情報をすべて提供している。
  3. 多くの解析オプション (計測、サンプリングなど) や構成可能な設定があり、解析におけるオーバーヘッドが比較的低い。
  4. ライブで情報が表示される。
  5. ガベージ コレクターを手動で実行し、メモリの解放を確認できる。
  6. カスタム プローブ設定、インターセプター スクリプトの実行、インスペクション、ヒープ ウォーカー フィルターなどを含む JProfiler GUI の組み込みスクリプト エディターでカスタム ロジックを入力できる。

JProfiler に関する概要、ライセンス、価格、ダウンロードなどの詳細は、こちらの弊社製品ページをご覧ください。


記事参照:
2017 年 8 月 24 日
Ritu Bhat
Test Lead – Engineering R & D Services
HCL Technologies Limited
JProfiler – A tool to capture performance bottlenecks