VisualVMとVS Codeの統合

GraalVM Tools for Java拡張機能は、VisualVM (オールインワンのJava (およびポリグロット)のモニタリングとトラブルシューティング・ツール)との統合を提供します。これにより、VS CodeへのビジュアルJavaツールが提供されます。

VisualVMとVS Codeの統合

「View」「Command Palette」に移動して、「VisualVM」を検索する場合は、VisualVMに関連する次のアクションを使用できます:

コマンド・パレットから使用できるVisualVMコマンド

VS Codeからモニタリングを開始するには、次の手順を実行します:

  1. アクティビティ・パネルで「Gr」をクリックし、こちらの説明に従って最新のGraalVMリリースをインストールしてアクティブ化します。
  2. Javaアプリケーション(デバッグの有無にかかわらず)を実行すると、プロセスIDが自動的に検出されます。VS CodeのVisualVMペインで次のように表示されます:

    検出されたプロセスID

    プロジェクトの開始中に、VisualVMペインのプロセス・ノードに「pid pending」ラベルが付いたプロジェクト名が表示されます。プロジェクト・プロセスが開始されると、プロセス・ノードが更新されてプロセスID (PID)が表示されます。

    ノート: VS CodeのVisualVMは、システムを表示し、プロジェクトの起動時にプロジェクト・プロセスを検索します。

  3. 再生ボタンをクリックします:

    VS CodeからVisualVMを開く

    • プロセス・ノードでPIDが選択されていない場合、VisualVMが起動します。
    • VisualVMが起動し、プロセス・ノードで選択した場合はPIDが開きます。
  4. 続行してスレッド・ダンプ、ヒープ・ダンプ、CPUサンプラ、メモリー・サンプラ、JFRなどのアクションを起動すると、VisualVMでモニターするプロセスを確認するプロンプトが表示されます:

    VisualVMでモニターするJavaプロセスの選択

「VisualVM: Process」フィールドのループ・アイコンをクリックして、同時に実行されるJavaプロセスのチェックを手動でリクエストできます。Javaプロセスの読取りを開始し、モニターするプロセスの選択を求めます。

デフォルトでは、Javaプロセスの起動時にVisualVMはオープンしませんが、別の動作を構成できます。VisualVMペインで、編集ボタンをクリックし、プロジェクトの開始時に実行するアクションを選択します。

Javaプロジェクトの開始時に実行するアクションの選択

VisualVMペイン

VisualVMペインには、次のアクションおよび機能があります:

VisualVMの起動

VisualVMツールを起動するアクションは、アクティブなGraalVMインストールにバンドルされています。プロセスがモニタリング用にすでに選択されている場合は、VisualVMにより、定義済のタブでプロセス・ビューが開きます。モニタリング対象として選択されたプロセスがもう実行されていない場合、アクションの起動により、プロセスの選択の解除のみが行われ、通知が表示されます。それ以降のアクション呼出しでは、プロセス・コンテキストなしでVisualVMが再び起動されます。

その他のアクション...→[概要/モニター/スレッド/サンプラ]ビューを事前選択

プロセス・ビューを開く際にどのタブが選択されるかを定義するための選択肢です。

VS CodeのVisualVMペイン

その他のアクション...→VisualVMウィンドウを前面に移動

選択すると、VisualVMでアクションが呼び出されるたびに、VisualVMウィンドウが最上部のウィンドウになります。特定のウィンドウ・システムでは影響がない場合があります。

その他のアクション...→ソース統合への移動の有効化

VS Codeでプロジェクトが開いている場合にのみ使用できます。選択した場合、VisualVMは、様々なVisualVMビューの「Go to Source」アクションの起動時にVS Codeエディタでソース・コードを開くように構成されます。VisualVMのオプション|ソース設定は、現在のプロジェクトのソース・ルートおよびアクティブなGraalVMインストール・ソースによって移入され、VS Codeはソース・ビューアに設定されます。

VisualVMの「Go to Source」により、VS CodeプロジェクトおよびアクティブなGraalVMソースで定義されたソースが開くことに注意してください。プロジェクト・ライブラリのソースおよびその他の依存関係は、VisualVMから開けません。「Enable Go to Source integration」の選択を解除して、VisualVMのオプション|ソース設定でソース・ルートおよびソース・ビューアの手動定義を有効にします。

ノート: 「Go to Source」アクションは、一部のVisualVMビューでは現在使用できず、特定のJava言語機能に対するいくつかの制限があります。詳細は、ソースのサポートを参照してください。

プロセス

VisualVMによってモニタリング対象として選択されたプロセスを追跡するノード。デフォルトでは、プロセスは選択されず、未選択の値が表示されます。プロセス・ノードで使用可能な「Select process」アクションを使用するか、プロセス選択が必要なアクションを呼び出すか、コマンド・パレットで「Open Process In VisualVM」を使用するか、特別な「Launch VisualVM & Java 8+ Application」起動構成を使用してプロジェクトを開始することで、プロセスをモニタリング対象として選択できます。

モニタリング対象のプロセスを選択すると、現在のユーザーが開始したローカルJavaプロセスのリストが表示されます(アクティブなGraalVMのjpsツールを使用して移入されます)。各プロセスのメイン クラスは、使用可能な場合はプロセスIDと共に表示されますプロセスがVisualVM (-Dvisualvm.display.name=CustomName)にカスタム名を表示するように構成されている場合は、メイン・クラスのかわりにカスタム名が表示されます。各プロセス・アイテムには、プロセスに渡される引数(使用可能な場合)とともに完全修飾されたメイン・クラス名も表示されます。

選択したプロセスが終了すると、VisualVMの起動またはプロセス選択を必要とするアクションのいずれかの最初の呼出し時にノードはクリアされます。

開始時

プロセスの開始時に実行するアクションを定義するノード。この機能を使用するには、「Launch VisualVM & Java 8+ Application」起動構成を使用してプロジェクトを開始する必要があります。次の中から選択できます。

デフォルトでは、プロセスを開くの選択肢が選択されています。つまり、プロジェクト・プロセスが(「Launch VisualVM & Java 8+ Application」起動構成を使用して)開始されると、VisualVMも起動され、プロジェクト・プロセスが開き、定義されたタブが選択されます。デフォルトの選択肢を変更するには、「Configure」アクションを使用します。

スレッド・ダンプ

モニタリング対象として選択されたプロセスからスレッド・ダンプを取得および表示するためのノードおよびアクション。モニタリング対象のプロセスがまだ選択されていない場合、プロセス選択が要求されます。モニタリング対象として選択されたプロセスがもう実行されていない場合、「Take thread dump」アクションの起動により、プロセスの選択の解除のみが行われ、通知が表示されます。それ以降のアクション呼出しは、別のプロセス選択を要求します。

ヒープ・ダンプ

モニタリング対象として選択されたプロセスからヒープ・ダンプを取得および表示するためのノードおよびアクション。モニタリング対象のプロセスがまだ選択されていない場合、プロセス選択が要求されます。モニタリング対象として選択されたプロセスがもう実行されていない場合、「Take heap dump」アクションの起動により、プロセスの選択の解除のみが行われ、通知が表示されます。それ以降のアクション呼出しは、別のプロセス選択を要求します。

CPUサンプラ

モニタリング対象として選択されたプロセスの定義済設定を使用して、CPUサンプリング・セッションの開始、スナップショット取得および停止を行うノードおよびアクション。モニタリング対象のプロセスがまだ選択されていない場合、プロセス選択が要求されます。モニタリング対象として選択されたプロセスがもう実行されていない場合、CPUサンプラ・アクションの起動により、プロセスの選択の解除のみが行われ、通知が表示されます。それ以降のアクション呼出しは、別のプロセス選択を要求します。

CPUサンプラには、次のアクションがあります:

メモリー・サンプラ

モニタリング対象として選択されたプロセスの定義済設定を使用して、メモリー・サンプリング・セッションの開始、スナップショット取得および停止を行うノードおよびアクション。モニタリング対象のプロセスがまだ選択されていない場合、プロセス選択が要求されます。モニタリング対象として選択されたプロセスがもう実行されていない場合、メモリー・サンプラ・アクションの起動により、プロセスの選択の解除のみが行われ、通知が表示されます。それ以降のアクション呼出しは、別のプロセス選択を要求します。

メモリー・サンプラには、次のアクションがあります:

メモリー・サンプラ・ノードをさらに展開して、メモリー・サンプリング設定にアクセスできます。「構成」アクションを使用して、次の設定を構成できます:

JDK Flight Recorder

モニタリング対象として選択されたプロセスの定義済設定を使用して、JDK Flight Recorder (JFR)セッションを開始、ダンプおよび停止するノードおよびアクション。モニタリング対象のプロセスがまだ選択されていない場合、プロセス選択が要求されます。モニタリング対象として選択されたプロセスがもう実行されていない場合、JFRアクションの起動により、プロセスの選択の解除のみが行われ、通知が表示されます。それ以降のアクション呼出しは、別のプロセス選択を要求します。

JFRには、次のアクションがあります:

JFRノードをさらに展開して、フライト・レコーダの設定にアクセスできます。「構成」アクションを使用して、次の設定を構成できます:

ノート: 現在のアクティブなGraalVMインストールがGraalVM 21.2.0より古い場合は、プロセス・ノードと開始時ノードのみがVisualVMペインに表示されます。開始時ノードでは、「何もしない」およびプロセスを開くプロセスの選択肢のみが提供されます。その他のアクション...メニューでは、VisualVMを前面に移動およびソース統合への移動の有効化アクションは提供されません。すべての機能にアクセスするには、最新のGraalVMリリースを必ず使用してください。

使用可能なコマンド

VS Codeで最新のGraalVMをアクティブにインストールすると、VisualVMに関連する次のクイック・アクションが使用可能になります:

コマンド・パレットから使用できるVisualVMコマンド

VisualVM: Start VisualVM

アクティブなGraalVMインストールにバンドルされているVisualVMツールを起動します。プロセスがモニタリング用にすでに選択されている場合は、VisualVMにより、定義済のタブでプロセス・ビューが開きます。モニタリング対象として選択されたプロセスがもう実行されていない場合、アクションの起動により、プロセスの選択の解除のみが行われ、通知が表示されます。それ以降のアクション呼出しでは、プロセス・コンテキストなしでVisualVMが再び起動されます。

VisualVM: VisualVMでプロセスを開く

プロセス選択を要求し、選択したプロセスをVisualVMの定義済のタブで開きます。

VisualVM: スレッド・ダンプの取得

モニタリング対象として選択したプロセスからスレッド・ダンプを取得して表示します。モニタリング対象のプロセスがまだ選択されていない場合、プロセス選択が要求されます。モニタリング対象として選択されたプロセスがもう実行されていない場合、「Take thread dump」アクションの起動により、プロセスの選択の解除のみが行われ、通知が表示されます。それ以降のアクション呼出しは、別のプロセス選択を要求します。

VisualVM: ヒープ・ダンプの取得

モニタリング対象として選択したプロセスからヒープ・ダンプを取得して表示します。モニタリング対象のプロセスがまだ選択されていない場合、プロセス選択が要求されます。モニタリング対象として選択されたプロセスがもう実行されていない場合、「Take heap dump」アクションの起動により、プロセスの選択の解除のみが行われ、通知が表示されます。それ以降のアクション呼出しは、別のプロセス選択を要求します。

VisualVM: CPUサンプリングの開始

定義された設定を使用して、モニタリング対象に選択したプロセスの新しいCPUサンプリング・セッションを開始し(まだ実行されていない場合)、VisualVMの「サンプラ」タブでプロセスを開きます。モニタリング対象のプロセスがまだ選択されていない場合、プロセス選択が要求されます。モニタリング対象として選択されたプロセスがもう実行されていない場合、「Start CPU sampling」アクションの起動により、プロセスの選択の解除のみが行われ、通知が表示されます。それ以降のアクション呼出しは、別のプロセス選択を要求します。

VisualVM: メモリー・サンプリングの開始

定義された設定を使用して、モニタリング対象に選択したプロセスの新しいメモリー・サンプリング・セッションを開始し(まだ実行されていない場合)、VisualVMの「サンプラ」タブでプロセスを開きます。モニタリング対象のプロセスがまだ選択されていない場合、プロセス選択が要求されます。モニタリング対象として選択されたプロセスがもう実行されていない場合、「Start memory sampling」アクションの起動により、プロセスの選択の解除のみが行われ、通知が表示されます。それ以降のアクション呼出しは、別のプロセス選択を要求します。

VisualVM: フライト記録の開始

定義された設定を使用して、モニタリング対象に選択したプロセスのフライト記録セッションを開始し(まだ実行されていない場合)、VisualVMの定義済のタブでプロセスを開きます。モニタリング対象のプロセスがまだ選択されていない場合、プロセス選択が要求されます。モニタリング対象として選択されたプロセスがもう実行されていない場合、「フライト記録の開始」アクションの起動により、プロセスの選択の解除のみが行われ、通知が表示されます。それ以降のアクション呼出しは、別のプロセス選択を要求します。