VisualVMとVS Codeの統合
GraalVM Tools for Java拡張機能は、VisualVM (オールインワンのJava (およびポリグロット)のモニタリングとトラブルシューティング・ツール)との統合を提供します。これにより、VS CodeへのビジュアルJavaツールが提供されます。
「View」、「Command Palette」に移動して、「VisualVM」を検索する場合は、VisualVMに関連する次のアクションを使用できます:
VS Codeからモニタリングを開始するには、次の手順を実行します:
- アクティビティ・パネルで「Gr」をクリックし、こちらの説明に従って最新のGraalVMリリースをインストールしてアクティブ化します。
- Javaアプリケーション(デバッグの有無にかかわらず)を実行すると、プロセスIDが自動的に検出されます。VS CodeのVisualVMペインで次のように表示されますプロジェクトの開始中に、VisualVMペインのプロセス・ノードに「pid pending」ラベルが付いたプロジェクト名が表示されます。プロジェクト・プロセスが開始されると、プロセス・ノードが更新されてプロセスID (PID)が表示されます。
ノート: VS CodeのVisualVMは、システムを表示し、プロジェクトの起動時にプロジェクト・プロセスを検索します。
-
再生ボタンをクリックします:
- プロセス・ノードでPIDが選択されていない場合、VisualVMが起動します。
- VisualVMが起動し、プロセス・ノードで選択した場合はPIDが開きます。
-
続行してスレッド・ダンプ、ヒープ・ダンプ、CPUサンプラ、メモリー・サンプラ、JFRなどのアクションを起動すると、VisualVMでモニターするプロセスを確認するプロンプトが表示されます:
「VisualVM: Process」フィールドのループ・アイコンをクリックして、同時に実行されるJavaプロセスのチェックを手動でリクエストできます。Javaプロセスの読取りを開始し、モニターするプロセスの選択を求めます。
デフォルトでは、Javaプロセスの起動時にVisualVMはオープンしませんが、別の動作を構成できます。VisualVMペインで、編集ボタンをクリックし、プロジェクトの開始時に実行するアクションを選択します。
VisualVMペイン
VisualVMペインには、次のアクションおよび機能があります:
VisualVMの起動
VisualVMツールを起動するアクションは、アクティブなGraalVMインストールにバンドルされています。プロセスがモニタリング用にすでに選択されている場合は、VisualVMにより、定義済のタブでプロセス・ビューが開きます。モニタリング対象として選択されたプロセスがもう実行されていない場合、アクションの起動により、プロセスの選択の解除のみが行われ、通知が表示されます。それ以降のアクション呼出しでは、プロセス・コンテキストなしで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」起動構成を使用してプロジェクトを開始する必要があります。次の中から選択できます。
- Do nothing: プロセスが開始されたときにアクションは実行されません
- Open process: プロセスがVisualVMで開き、定義されたタブが選択されます
- Start CPU sampler: プロセスがVisualVMで開き、「Sampler」タブが選択され、CPUサンプリング・セッションが定義された設定を使用して起動されます
- Start Memory sampler: プロセスがVisualVMで開き、「Sampler」タブが選択され、メモリー・サンプリング・セッションが定義された設定を使用して起動されます
- Start JFR recording: プロセスがVisualVMで開き、フライト記録が定義された設定を使用して開始されます
デフォルトでは、プロセスを開くの選択肢が選択されています。つまり、プロジェクト・プロセスが(「Launch VisualVM & Java 8+ Application」起動構成を使用して)開始されると、VisualVMも起動され、プロジェクト・プロセスが開き、定義されたタブが選択されます。デフォルトの選択肢を変更するには、「Configure」アクションを使用します。
スレッド・ダンプ
モニタリング対象として選択されたプロセスからスレッド・ダンプを取得および表示するためのノードおよびアクション。モニタリング対象のプロセスがまだ選択されていない場合、プロセス選択が要求されます。モニタリング対象として選択されたプロセスがもう実行されていない場合、「Take thread dump」アクションの起動により、プロセスの選択の解除のみが行われ、通知が表示されます。それ以降のアクション呼出しは、別のプロセス選択を要求します。
ヒープ・ダンプ
モニタリング対象として選択されたプロセスからヒープ・ダンプを取得および表示するためのノードおよびアクション。モニタリング対象のプロセスがまだ選択されていない場合、プロセス選択が要求されます。モニタリング対象として選択されたプロセスがもう実行されていない場合、「Take heap dump」アクションの起動により、プロセスの選択の解除のみが行われ、通知が表示されます。それ以降のアクション呼出しは、別のプロセス選択を要求します。
CPUサンプラ
モニタリング対象として選択されたプロセスの定義済設定を使用して、CPUサンプリング・セッションの開始、スナップショット取得および停止を行うノードおよびアクション。モニタリング対象のプロセスがまだ選択されていない場合、プロセス選択が要求されます。モニタリング対象として選択されたプロセスがもう実行されていない場合、CPUサンプラ・アクションの起動により、プロセスの選択の解除のみが行われ、通知が表示されます。それ以降のアクション呼出しは、別のプロセス選択を要求します。
CPUサンプラには、次のアクションがあります:
- Start CPU sampling: 定義された設定を使用して新しいCPUサンプリング・セッションを開始し(まだ実行されていない場合)、VisualVMの「Sampler」タブでプロセスを開きます
- Take snapshot of sampler results: CPUサンプリング・セッションがすでに実行中であり、これまで一部の結果が収集されている場合、結果スナップショットを取得および表示します
-
Stop sampling: CPUサンプリング・セッションを停止します(実行されている場合)。CPUサンプラ・ノードをさらに展開して、CPUサンプリング設定にアクセスできます。「構成」アクションを使用して、次の設定を構成できます:
- フィルタ
CPUサンプリング・フィルタの定義。このフィルタは、CPUサンプラによって収集されるデータを制御し、ライブ結果およびスナップショットの分析に使用できます。次の中から選択できます。
- Include all classes: プロジェクト・クラス、プロジェクト・ライブラリおよびその他の依存関係のクラスおよびJDKクラスを含む、すべてのクラスからのデータが収集されます
- Exclude JDK classes: JDKクラス(
java.*
、com.sun.*
、org.graalvm.*
など)を除くすべてのクラスからのデータが収集されます - Include only project classes: 現在のプロジェクトによって定義されたクラスのデータのみが収集されます
デフォルトでは、すべてのクラスを含めるが選択されています。通常は、サンプラ結果が収集されるとカスタム・フィルタを使用してさらにフィルタできるため、これは最適な選択肢です。
- サンプリング・レート CPUサンプリング・レートの定義。サンプリング・レートは、どのメソッドをサンプラ・エンジンに「可視化」させるかを制御します。サンプリング・レートが高いほど、追跡できる実行メソッドが短くなりますが、より高いオーバーヘッドがモニター対象のプロセスに課せられ、実行に偏りが生じます。使用可能な値は、20ミリ秒から10.000ミリ秒です。デフォルトでは、100 msの値が選択されます。通常、これはパフォーマンス・ボトルネックの検索時に最適な選択肢であり、プロセスをほぼフル・スピードで実行できます。
メモリー・サンプラ
モニタリング対象として選択されたプロセスの定義済設定を使用して、メモリー・サンプリング・セッションの開始、スナップショット取得および停止を行うノードおよびアクション。モニタリング対象のプロセスがまだ選択されていない場合、プロセス選択が要求されます。モニタリング対象として選択されたプロセスがもう実行されていない場合、メモリー・サンプラ・アクションの起動により、プロセスの選択の解除のみが行われ、通知が表示されます。それ以降のアクション呼出しは、別のプロセス選択を要求します。
メモリー・サンプラには、次のアクションがあります:
- Start memory sampling: 定義された設定を使用して新しいメモリー・サンプリング・セッションを開始し(まだ実行されていない場合)、VisualVMの「Sampler」タブでプロセスを開きます
- Take snapshot of sampler results: メモリー・サンプリング・セッションがすでに実行中であり、これまで一部の結果が収集されている場合、結果スナップショットを取得および表示します
- Stop sampling: メモリー・サンプリング・セッションを停止します(実行中の場合)
メモリー・サンプラ・ノードをさらに展開して、メモリー・サンプリング設定にアクセスできます。「構成」アクションを使用して、次の設定を構成できます:
- サンプリング・レート メモリー・サンプリング・レートの定義。サンプリング・レートは、クラス・ヒストグラムがプロセスから取得され、VisualVMに表示される頻度を制御します。使用可能な値は、100ミリ秒から10.000ミリ秒です。デフォルトでは、1.000 msの値が選択されます。通常、これは、ヒープに現在割り当てられているクラスおよびインスタンスが予想時間にリリースされるかどうかを評価する最適な選択肢です。
JDK Flight Recorder
モニタリング対象として選択されたプロセスの定義済設定を使用して、JDK Flight Recorder (JFR)セッションを開始、ダンプおよび停止するノードおよびアクション。モニタリング対象のプロセスがまだ選択されていない場合、プロセス選択が要求されます。モニタリング対象として選択されたプロセスがもう実行されていない場合、JFRアクションの起動により、プロセスの選択の解除のみが行われ、通知が表示されます。それ以降のアクション呼出しは、別のプロセス選択を要求します。
JFRには、次のアクションがあります:
- フライト記録の開始: 定義された設定を使用してフライト記録セッションを開始し(まだ実行されていない場合)、VisualVMの定義済のタブでプロセスを開きます
- フライト記録データのダンプ: フライト記録セッションがすでに実行中の場合、これまでに収集されたフライト記録データをダンプして表示します
- フライト記録の停止: 実行中の場合、フライト記録セッションを停止します
JFRノードをさらに展開して、フライト・レコーダの設定にアクセスできます。「構成」アクションを使用して、次の設定を構成できます:
-
設定 フライト・レコーダ構成の定義。フライト・レコーダ構成は、各イベント・タイプの設定を定義することにより、記録されるデータの量を制御します。次の事前定義済構成が使用可能です:
- default - 低いオーバーヘッドで事前定義済の情報セットを収集します
- profile - デフォルト設定より多くのデータを収集しますが、オーバーヘッドとパフォーマンスへの影響は大きくなります。デフォルトでは、default構成が選択されます。通常、これはモニター対象プロセスの動作を評価するための最適な選択肢です。
ノート: 現在のアクティブなGraalVMインストールがGraalVM 21.2.0より古い場合は、プロセス・ノードと開始時ノードのみがVisualVMペインに表示されます。開始時ノードでは、「何もしない」およびプロセスを開くプロセスの選択肢のみが提供されます。その他のアクション...メニューでは、VisualVMを前面に移動およびソース統合への移動の有効化アクションは提供されません。すべての機能にアクセスするには、最新のGraalVMリリースを必ず使用してください。
使用可能なコマンド
VS Codeで最新のGraalVMをアクティブにインストールすると、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の定義済のタブでプロセスを開きます。モニタリング対象のプロセスがまだ選択されていない場合、プロセス選択が要求されます。モニタリング対象として選択されたプロセスがもう実行されていない場合、「フライト記録の開始」アクションの起動により、プロセスの選択の解除のみが行われ、通知が表示されます。それ以降のアクション呼出しは、別のプロセス選択を要求します。