JProfiler ヘルプ

IDE統合

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

IDE統合のインストール

JProfilerは、IntelliJ IDEA、VS Code、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ではIDE統合用としてJProfilerアプリケーションバンドル内に専用のヘルパーシェルスクリプト 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ウィンドウのツールバーには、IDE統合によって開かれたプロファイリングセッション向けにActivate IDEボタンが用意されています。このアクションは、IDE側のJProfilerアクティブ化アクションと同様にF11キーに割り当てられているため、同じキーバインドで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内でCPUデータを表示するには、IntelliJ IDEAの「Apply Graph」アクションを使用するか、JProfilerで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-0を押し、次に別のキーを押してナビゲーションアクションを選択する連鎖ショートカットになっています。この機能を頻繁に使用する場合は、よりシンプルなキーボードショートカットを割り当てるとよいでしょう。

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

Eclipse統合

Eclipseプラグインは、テスト実行構成やWTP実行構成を含む、最も一般的な起動構成タイプのプロファイリングが可能です。Eclipseプラグインは完全なEclipse SDKでのみ動作し、Eclipseフレームワークの部分的なインストール環境では動作しません。

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

Javaパースペクティブにメニュー項目Run→Profile ...が存在しない場合は、Window→Perspective→Customize PerspectiveでAction Set Availabilityタブを手前に表示し、Profileチェックボックスを選択して、このパースペクティブの「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 JProfilerとDisable 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サーバーが起動します。

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

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