JProfiler ヘルプ

IDE連携

アプリケーションをプロファイリングする際、JProfilerのビューに表示されるメソッドやクラスについて、ソースコードを確認しないと解決できない疑問がよく発生します。JProfilerにはそのための組み込みソースコードビューアがありますが、機能は限定的です。また、問題が見つかった場合、次のステップは通常そのコードの修正です。理想的には、JProfilerのプロファイリングビューからIDEへ直接移動できる経路があり、手動で検索することなくコードの確認や改善ができるべきです。

IDE連携のインストール

JProfilerはIntelliJ IDEA、Eclipse、NetBeans向けのIDE連携機能を提供しています。IDEプラグインをインストールするには、メインメニューから Session→IDE Integrationsを実行してください。IntelliJ IDEA用プラグインはIDE内のプラグイン管理機能でインストールし、他のIDEではJProfilerが直接プラグインをインストールします。インストーラーでもこの操作が可能で、JProfilerのインストールと同時にIDEプラグインのアップデートも簡単に行えます。連携ウィザードは、プラグインと現在のJProfilerインストールディレクトリを接続します。IDEプラグインの設定画面では、いつでも使用するJProfilerのバージョンを変更できます。プラグインとJProfiler GUI間のプロトコルは後方互換性があり、古いバージョンのJProfilerとも連携可能です。

IntelliJ IDEA連携はプラグインマネージャからもインストールできます。その場合、初回プロファイリング時にJProfiler実行ファイルの場所を尋ねられます。

プラットフォームごとにJProfiler実行ファイルの場所が異なります。Windowsでは bin\jprofiler.exe、LinuxやUnixでは bin/jprofiler、 macOSではJProfilerアプリケーションバンドル内のIDE連携用ヘルパーシェルスクリプト Contents/Resources/app/bin/macos/jprofiler.shとなります。

ソースコードナビゲーション

JProfiler内でクラス名やメソッド名が表示されている箇所では、コンテキストメニューにShow Sourceアクションが含まれています。

セッションがIDEから開始されていない場合は、組み込みのソースコードビューアが表示され、 コンパイル済みクラスファイルの行番号テーブルを利用してメソッドを特定します。ソースファイルは、 そのルートディレクトリまたは含まれているZIPファイルがアプリケーション設定で指定されている場合のみ見つかります。

ソースコード表示とあわせて、 jclasslib bytecode viewer に基づくバイトコードビューアが、コンパイル済みクラスファイルの構造を表示します。

セッションがIDEから起動された場合、組み込みソースコードビューアは使用されず、 Show SourceアクションはIDEプラグインに委譲されます。IDE連携は起動したプロファイリングセッション、 保存済みスナップショットのオープン、実行中JVMへのattachをサポートしています。

ライブプロファイリングセッションの場合、IDEでアプリケーションを実行またはデバッグするのと同様に、 プロファイル対象アプリケーションを起動します。JProfilerプラグインがプロファイリング用のVMパラメータを挿入し、 JProfilerウィンドウに接続します。JProfilerは別プロセスとして動作し、必要に応じてプラグインが起動します。 JProfilerからのソースコードナビゲーションリクエストはIDE内の関連プロジェクトに送信されます。 JProfilerとIDEプラグインは連携し、タスクバーの点滅などなく、まるで単一プロセスのようにシームレスにウィンドウを切り替えられます。

セッション開始時には「Session startup」ダイアログで全てのプロファイリング設定を行えます。 起動したセッションで使用されたプロファイリング設定は、IDE連携の種類に応じてプロジェクト単位または実行構成単位でJProfilerが記憶します。 初回プロファイリング時、IDEプラグインはソースファイルのパッケージ階層の最上位クラスに基づき、プロファイル対象パッケージのリストを自動判定します。 以降は、セッション設定ダイアログのフィルタ設定ステップでリセットボタンを使い、再計算できます。

スナップショットの場合、IDE内でFile→Openアクションでスナップショットファイルを開くか、 プロジェクトウィンドウでダブルクリックしてIDE連携をセットアップします。JProfilerからのソースコードナビゲーションは現在のプロジェクトに誘導されます。 最後に、IDEプラグインはIDEにAttach to JVMアクションを追加し、実行中JVMを選択してIDE内でソースコードナビゲーションを利用できます(スナップショットと同様の仕組み)。

特定のクラスやメソッドを意識せずIDEに切り替えたい場合もあります。そのために、JProfilerウィンドウのツールバーには Activate IDEボタンがあり、IDE連携で開かれたプロファイリングセッションで表示されます。 このアクションはF11キーに割り当てられており、IDE内のJProfilerアクティベーションアクションと同じキーで、 IDEとJProfiler間を簡単に切り替えられます。

IntelliJ IDEA連携

IntelliJ IDEAからアプリケーションをプロファイリングするには、 Runメニュー内のプロファイリングコマンドを選択するか、 メインツールバーの実行またはデバッグアクション横のドロップダウンメニューから 「Profile with JProfiler」アクションを選択します。JProfilerはIntelliJ IDEAのほとんどの実行構成タイプ(アプリケーションサーバーを含む)をプロファイルできます。

JProfilerプラグインは、実行構成に追加設定項目を追加しますが、すぐには表示されません。 これらの設定にアクセスするには、「Modify options」ドロップダウンで「Profile」オプションを選択してください。 その他のプロファイリング設定はJProfilerウィンドウの起動ダイアログで設定できます。

プロファイリングセッションが開始されると、出力はJProfiler専用のツールウィンドウに表示されます。 このツールウィンドウは通常の実行ツールウィンドウと同様にコンソール出力を表示し、 JProfiler UIに接続後に利用できる「JProfiler」タブも含まれます。

JProfilerツールウィンドウは、IntelliJ IDEAでJProfilerスナップショットを開いた場合や、 「Attach to JVM with JProfiler」アクションで実行中JVMにattachした場合にも表示されます。

「JProfiler」タブには、CPUデータ・割り当てデータ・プローブイベントの記録開始/停止アクションが含まれています。 さらに、JProfilerウィンドウへの切り替えアクションも用意されています。 JProfilerウィンドウにもIDEAウィンドウへの切り替えアクションがあり、2つのウィンドウを便利に行き来できます。 JProfilerからIntelliJ IDEAへの正確なソースコードナビゲーションはJavaとKotlinで実装されています。

プロファイリング情報は通常JProfilerウィンドウに表示されますが、CPUグラフデータはIntelliJ IDEAのUIにも統合され、 ソースコード内に直接表示できます。IntelliJ IDEAで「Apply graph」アクションを使うか、JProfilerでCPUグラフを生成して、 IntelliJ IDEA内でCPUデータを表示できます。スレッド選択などの高度なパラメータや、呼び出しツリールート・呼び出しツリー除去・ 呼び出しツリービューフィルタ設定を利用する場合は、JProfilerウィンドウでグラフを生成してください。

CPUデータが適用されると、「JProfiler」タブに記録されたメソッドのリストが表示されます。 メソッドをダブルクリックするとソースコードにジャンプします。ソースコードエディタのガターには、 入力・出力呼び出し用の矢印が追加されます。

ガターアイコンをクリックすると、入力または出力メソッドがポップアップウィンドウに表示され、 記録された時間を示す棒グラフも表示されます。ポップアップ内の行をクリックすると、対応するメソッドに移動します。

また、ポップアップ下部には対象メソッドの合計記録時間と呼び出し回数が表示されます。 ポップアップ右下の「Show in JProfiler」ドロップダウンでは、状況に応じたJProfiler UIへのナビゲーションアクションが提供されます。 選択したノードや対応する呼び出しグラフでの呼び出しツリー分析を表示できます。 出力呼び出しの場合は「Cumulated outgoing calls」分析、入力呼び出しの場合は「Backtraces」分析が利用可能です。

同じナビゲーションアクションは、「JProfiler」タブのメソッドテーブルのコンテキストメニューでも利用できます。

JProfilerプラグインは、「Attach to JVM with JProfiler」アクション用のツールバークイックアクションも提供しており、 メインツールバーに追加できます。このアクションで既に実行中のプロセスにattachし、 JProfiler UIからIntelliJ IDEAへのソースコードナビゲーションや、ソースコードエディタ内でのインラインCPUグラフデータ表示も利用できます。

アクションボタンを追加すると、このように表示されます。

JProfilerの全アクションのキーバインドは、IntelliJ IDEAの「Keymap」設定でカスタマイズできます。 利用可能なキーボードショートカットが限られているため、ソースコードエディタからJProfiler UIへのナビゲーションアクションは チェーンショートカット(最初にCtrl-Alt-Shift-Oを押し、その後別のキーでアクション選択)となっています。 この機能を頻繁に利用する場合は、よりシンプルなショートカットを割り当てることもできます。

IDE設定のTools->JProfilerページでは、使用するJProfiler実行ファイルや、 新しいプロファイリングセッションごとにJProfilerで新しいウィンドウを開くかどうかの設定を調整できます。

Eclipse連携

Eclipseプラグインは、テスト実行構成やWTP実行構成を含む、一般的な起動構成タイプのほとんどをプロファイルできます。 EclipseプラグインはEclipseフレームワークの部分的なインストールでは動作せず、 フルEclipse SDKでのみ動作します。

Eclipseからアプリケーションをプロファイリングするには、 Runメニュー内のプロファイリングコマンドを選択するか、 対応するツールバーボタンをクリックしてください。プロファイルコマンドはEclipseのデバッグ・実行コマンドと同等で、 Eclipseのインフラストラクチャの一部ですが、 Run→Attach JProfiler to JVMメニュー項目のみJProfilerプラグインによって追加されます。

JavaパースペクティブでRun→Profile ...メニュー項目が存在しない場合は、 Window→Perspective→Customize Perspectiveで 「Profile」アクションを有効にしてください。 Action Set Availabilityタブを前面にし、Profileチェックボックスを選択します。

JProfiler関連の各種設定(JProfiler実行ファイルの場所など)は、 EclipseのWindow→Preferences→JProfilerで調整できます。

VS Code連携

VS Code拡張機能はEnable Profiling with JProfilerアクションを追加します。 実行すると、デバッグおよび実行アクションがJava起動構成でプロファイリングを開始します。 JProfilerが起動し、プロファイリング設定を行うセッション開始ダイアログが表示されます。 ダイアログ確定後にアプリケーションが開始されます。

Disable Profiling with JProfilerアクションを使うと、 実行・デバッグアクションのデフォルト動作が元に戻ります。 プロファイリングモードの変更通知は、エディタ右下のトーストメッセージとしてVS Codeに表示されます。 Enable Profiling with JProfilerDisable Profiling with JProfilerは 同じデフォルトキーバインドを持ち、プロファイリングモードの切り替えに利用できます。

既に実行中のJVMをプロファイルするには、Attach to a Running JVM with JProfilerアクションを使用してください。

JProfilerでのソースナビゲーションアクションは、対応するソースコードをVS Codeに表示します。 JProfilerスナップショットのVS Codeへのソースナビゲーションを行うには、 VS Code内でFile→Openからスナップショットを開いてください。

NetBeans連携

NetBeansでは、標準プロジェクト、フリーフォームプロジェクト、exec Mavenプラグインを利用するMavenプロジェクトをプロファイルできます。 NetBeansからアプリケーションをプロファイリングするには、 Runメニュー内のプロファイリングコマンドを選択するか、 対応するツールバーボタンをクリックしてください。 別の方法でアプリケーションを起動するMavenプロジェクトやGradleプロジェクトの場合は、 プロジェクトを通常通り起動し、メニューのProfile→Attach JProfiler To A Running JVMアクションを使用してください。

フリーフォームプロジェクトの場合、プロファイリング前に一度アプリケーションをデバッグする必要があります。 必要なファイルnbproject/ide-targets.xmlはデバッグアクションでセットアップされます。 JProfilerはこのファイルに「profile-jprofiler」というターゲットを追加し、デバッグターゲットと同じ内容を設定し、 必要に応じてVMパラメータを修正します。フリーフォームプロジェクトのプロファイリングで問題が発生した場合は、 このターゲットの実装を確認してください。

統合TomcatやNetBeansで設定された他のTomcatサーバーを使ってWebアプリケーションをプロファイルできます。 メインプロジェクトがWebプロジェクトの場合、Profile main project with JProfilerを選択すると、 Tomcatサーバーがプロファイリング有効で起動します。

NetBeansでバンドルされているGlassFish Serverを利用し、メインプロジェクトがGlassFish Serverを使うよう設定されている場合、 Profile main project with JProfilerを選択すると、アプリケーションサーバーがプロファイリング有効で起動します。

JProfiler実行ファイルの場所や新しいJProfilerウィンドウを開くポリシーは、 オプションダイアログのMiscellaneous→JProfilerで調整できます。