この記事の内容は、JDK 独自の jmap と jhat を使用して Java プロセスの実行状況を監視する方法についてです。必要な方は参考にしていただければ幸いです。
Java プロセスを実行するために、JDK には、Java 開発者がプロセス内で作成されるオブジェクト インスタンスの数、消費量、必要なメモリ量など、実行中のプロセスのさまざまな状態を監視できるツールが多数付属しています。 、など。
この記事はJDK1.8をベースに書いています。
私は以下の最も単純な Java クラスを作成しました。これには、5 秒ごとにカウンターの値を増加させる無限ループが含まれています。
package jmap; class Tool{ private int count = 0; public void Run() throws InterruptedException{ while(true){ System.out.println("Hello: " + this.count++); Thread.sleep(5000); } } } public class JMapTest { public static void main(String[] args) throws InterruptedException { Tool tool = new Tool(); tool.Run(); } }
このアプリケーションを Eclipse で実行します。
以下では、jmap と jhat を使用してこの実行中のプロセスを監視する方法について説明します。
1. まず、この Java 実行プロセスの ID を取得します: 15392。 Windows に付属のタスク マネージャーを直接使用してプロセス ID を取得しました。
2 次のコマンド ラインを使用します:
jmap -dump:format=b,file=c:tempheapstatus.bin 15392
jmap は JDK によって提供されるツールで、JDK インストール ディレクトリの bin フォルダーにあります。
コマンド ラインを実行すると、ヒープ ダンプ ファイルが生成されます: headstatus.bin
3. これで、別の JDK ツール jhat を使用して、このダンプ ファイルを読み取り、解析できるようになります。コマンドラインを使用します:
jhat c:tempheapstatus.bin
#分析が完了すると、jhat によって出力されるプロンプトが表示されます。そのスナップショットは解決されました。これはローカル サーバーのポート 7000 から表示できます。 http://localhost:7000 にアクセスすると、jmap の解析結果が表示されます。 localhost:7000 in browser:
ハイパーリンク「jmap Tool」をクリックして詳細を入力します。下の図は私のツール クラス インスタンスのメンバー変数 @0x7166babd8、つまりカウンターの値が 49 まで蓄積されました。
#4 コマンド ラインが気に入らない場合は、Eclipse プラグイン、MAT – メモリ アナライザー ツールを使用することもできます。 jmap での作業を完了するには、 jhat コマンドにも同じ機能があります。
このプラグインをインストールすると、Eclipse に追加のビューが表示されます:
jmap によって生成されたヒープ ダンプ ファイルを MAT ビューに直接ドラッグすると、結果が自動的に解析されて表示されます。 「アドレスでオブジェクトを検索」ボタンをクリックします。
localhost:7000 で前に表示したオブジェクトも表示されます。例の詳細:
で前に得たのと同じ結果が得られます。
以上がJDK の組み込み jmap および jhat を使用して Java プロセスの実行ステータスを監視する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。