Java VisualVM では、ローカルアプリケーションやリモートアプリケーションのデータは、そのアプリケーションに固有のタブ内に表示されます。アプリケーションタブは、「Applications」ウィンドウの右側にあるメインウィンドウ内に表示されます。アプリケーションタブは一度に複数個開くことができます。各アプリケーションタブに含まれるサブタブには、アプリケーションに関するさまざまな種類の情報が表示されます。
Java VisualVM の「Threads」タブには、スレッドアクティビティーに関するハイレベルのデータがリアルタイムで表示されます。
注: 「Threads」タブに表示される情報は、Java Management Extensions (JMX) に基づいています。「Threads」タブが表示されるのは、Java VisualVM がターゲットアプリケーションとの間で JMX テクノロジベースの接続 (JMX 接続) を確立でき、かつその Java Virtual Machine (JVM) から JMX インストゥルメンテーションを取得できる場合です。ターゲットアプリケーションが Java Development Kit (JDK) Version 1.6 上で実行されているローカルアプリケーションである場合、JMX 接続は自動的に確立されます。ターゲットアプリケーションが JDK Version 1.6 上で実行されていない場合には、JVM ソフトウェアとの JMX 接続を明示的に確立する必要がある場合があります。JMX 接続の確立方法の詳細については、次のドキュメントを参照してください。
「Threads」タブにはデフォルトで、現在のスレッドアクティビティーのタイムラインが表示されます。タイムライン内のスレッドをダブルクリックして、そのスレッドに関する詳細情報を「Details」タブ内に表示できます。
このタブには、リアルタイムのスレッド状態を含むタイムラインが表示されます。現在の表示のズームイン/アウトを行なったり、Scale to Fit モードに切り替えたりするには、タイムラインツールバーのボタンを使用します。ドロップダウンリストを使えば、表示されるスレッドを選択できます。すべてのスレッド、ライブスレッド、終了スレッドのいずれかを表示することを選択できます。また、単一のスレッドや複数のスレッドを選択してスレッドのサブセットを表示させることもできます。あるスレッドのタイムラインをダブルクリックすれば、そのスレッドを「Details」タブ内で開くことができます。
各スレッドのタイムラインを見れば、そのスレッドのアクティビティーの概要をすばやくつかむことができます。
「Details」タブには、個々のスレッドに関するより詳細な情報が表示されます。ドロップダウンリストを使えば、すべてのスレッド、すべてのライブスレッド、すべての終了スレッドのいずれかを表示することを選択できます。また、「Timeline」ビューで選択されたスレッドの詳細だけを表示することを選択することもできます。スレッドごとに、名前、クラス名、および現在のステータス (ライブ/終了) が表示されます。スレッドの短い説明も表示されます。
「Details」タブに表示される各スレッドには次のタブが含まれます。
各スレッドのタイムラインを見れば、そのスレッドのアクティビティーの概要をすばやくつかむことができます。
Java VisualVM では、ローカルアプリケーションの実行中にスレッドダンプ (スタックトレース) を取ることができます。スレッドダンプを取ってもアプリケーションが停止されることはありません。スレッドダンプを出力すると、Java スレッドのスレッド状態を含むスレッドスタックの出力が得られます。
Java VisualVM でスレッドダンプを出力すると、アプリケーションのアクティブスレッドのスタックトレースが出力されます。Java VisualVM を使ってスレッドダンプを取ることは、アプリケーションのコマンド行コンソールが存在しない場合に非常に役立つ場合があります。スタックトレースを使えば、デッドロックやアプリケーションがどのタイミングでハングアップしたかなど、さまざまな問題の診断が容易になります。
スレッドダンプサブタブ内のスレッドダンプ (スタックトレース) のスクリーンショット。