JConsole の使用
JConsole (Java™ Monitoring and Management Console) は、ユーザーが Java アプリケーションの動作をモニターおよび管理できるようにするグラフィック・ツールです。
JConsole ツールは、java.lang.management API に基づいてビルドされています。 JConsole は、同じワークステーション上、またはリモート・ワークステーション上で実行されているアプリケーションに接続します。 アプリケーションはアクセスを許可するように構成する必要があります。
JConsole は、Java アプリケーションに接続すると、そのアプリケーションに関する情報を報告します。 この詳細情報には、メモリー使用量、実行中のスレッド、およびロードされたクラスが含まれています。 このデータは、アプリケーションおよび JVM の動作をモニターするときに役立ちます。 この情報は、パフォーマンス上の問題、メモリー使用量に関する問題、ハング、またはデッドロックについて理解する際に役立ちます。
Java アプリケーションをモニターするための JConsole のセットアップ
- モニターする Java アプリケーションは、他のシステムまたは他のユーザーから JConsole にアクセスできるようにするコマンド行オプションを使用して開始する必要があります。 JConsole は、そのようなオプションを使用せずに、同じシステム上の同じユーザーによって所有されているプロセスに接続できます。 最も単純なモニター・オプション・セットを以下に例示します。
<port number>の値は、システム上の空きポートでなければなりません。 この例では、authenticate および ssl オプションにより、Secure Sockets Layer (SSL) を使用したパスワード認証および暗号化が無効にされています。 これらのオプションを使用すると、指定されたポートにアクセスできる場合に、JConsole またはその他の JMX エージェントが Java アプリケーションに接続できるようになります。 このような非セキュア・オプションは、開発環境やテスト環境でのみ使用してください。 セキュリティー・オプションの構成について詳しくは、「 https://docs.oracle.com/javase/8/docs/technotes/guides/jmx/overview/connectors.html」を参照してください。-Dcom.sun.management.jmxremote.port=<port number> -Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false
- コマンド行で jconsole と入力して JConsole を開始します。 パスには、Javaインストール済み環境のbinディレクトリーが含まれている必要があります。
- JConsole の 「新規接続」 ダイアログが開きます。ステップ 1で指定したホスト名とポート番号を入力します。 Java アプリケーションと同じワークステーションで JConsole を実行している場合は、ホスト名の値を localhostのままにします。 リモート・システムの場合は、ホスト・フィールド値をワークステーションのホスト名または IP アドレスに設定してください。 ステップ 1で指定したオプションを使用した場合は、 「ユーザー名」 フィールドと 「パスワード」 フィールドをブランクのままにします。
- 「接続」 をクリックします。 JConsole が開始され、「要約」タブが表示されます。
JConsole による JConsole 自体のモニターのセットアップ
- コマンド行で jconsole と入力して JConsole を開始します。 パスには、SDKのbinディレクトリーが含まれている必要があります。
- JConsole の 「新規接続」 ダイアログが開きます。 「リモート・プロセス」 フィールドに localhost:0 と入力します。
- 「接続」 をクリックします。 JConsole が開始され、要約タブが表示されます。
JConsole を使用した Java アプリケーションのモニター
JConsole の「要約」タブには、接続された JVM に関する主要な詳細が示されます。 ここから他の任意のタブを選択して、ある特定の側面に関するより詳しい内容を確認することができます。 「メモリー」タブには、JVM の各メモリー・プールの使用量の履歴が表示されます。ヒープ・メモリーの使用量の場合に最も便利です。
「GC の実行」ボタンをクリックして、ガーベッジ・コレクションの実行を要求することもできます。 前述のようにセキュリティー・オプションを無効にして接続するか、制御ユーザーとして認証されている必要があります。
「スレッド」タブには、現在実行中のスレッドの数、および各スレッドの ID のリストが表示されます。
スレッド ID をクリックすると、スレッドの状態、およびその現在のスタック・トレースが表示されます。
「クラス」タブには、現在ロードされているクラスの数、およびアプリケーションが開始されてからロードおよびアンロードされたクラスの数が表示されます。 「詳細出力」チェック・ボックスを選択すると、詳細なクラス・ロード出力のオン/オフを切り替えて、クライアント JVM でロードされているクラスのリストを表示できます。 出力は、クライアントJVMのstderr
出力に表示されます。
「MBean」タブでは、プラットフォーム MBean の状態を検査することで、JVM に関するより詳しい情報を得ることができます。 MBeanおよびJ9MXBean拡張について詳しくは、Eclipse OpenJ9資料の言語管理インターフェースセクションを参照してください。
最後に、 「VM」 タブには、JVM 引数や現在のクラスパスなど、Java アプリケーションが実行されている環境に関する情報が表示されます。
JConsole のトラブルシューティング
JConsole は Swing アプリケーションです。 モニター対象の Java アプリケーションと同じワークステーションで JConsole を実行すると、Java アプリケーションのパフォーマンスに影響します。 リモート・ワークステーション上で稼働する JVM への接続に JConsole を使用すれば、アプリケーションのパフォーマンスに対する影響を軽減できます。
JConsole は Java アプリケーションであるため、JConsole を開始するアプリケーションを介して Java コマンド行オプションを渡すことができます。これを行うには、JConsole の前に –Jを付けます。 例えば、JConsole が使用する最大ヒープ・サイズを変更するには、コマンド行オプション -J-Xmx< size>を追加します。
JConsole は Attach API を使用してアプリケーションに接続します。 接続先とすることができるのは、他の J9 仮想マシンのみです。 JConsole を使用してリモート・アプリケーションをモニターするときに問題が発生する場合の根本原因は Attach API である可能性があります。 問題を診断するには、Java添付APIを参照してください。
既知の制限
- ローカル・プロセス・リストの使用
- ローカル・プロセス・リストは機能しません。 「リモート・プロセス」 テキスト入力フィールドで localhost:<port> を使用して、ローカル JVM に接続します。
- 「概要 (Overview)」タブの CPU 使用量
- CPU 使用量の表示は機能しません。
詳細情報
JConsole および表示される値の定義について詳しくは、 Oracle 資料の「 https://docs.oracle.com/javase/8/docs/technotes/guides/management/index.html 」を参照してください。