JVMでよく使われるパフォーマンス監視ツールを見てみましょう

JVMでよく使われるパフォーマンス監視ツールを見てみましょう

前回の記事では、主にJVMのメモリ構造、クラスロードの仕組み、ガベージコレクションの仕組みについて分析しました。記事の順序も段階的になっています。この記事では、主に JDK に付属するツールを分析し、理論を実践に適用します。

まず、これから説明するツールの概要を説明し、次にそれらを 1 つずつ分析してみましょう。

1. パフォーマンス監視ツールの概要

ツールは主に問題を解決するために作成されます。これらのツールが存在するのは、プログラムにパフォーマンス上の問題があるためです。実際、JDK をダウンロードした後、それらのツールは SUN から提供されました。

JDK インストール ディレクトリを確認すると、そのようなツールが多数あることがわかります。

このような exe ファイルは多数見つかりますが、その多くはパフォーマンス監視ツールです。いくつか抜粋して説明させていただきます。

ツール名 主な機能
jps (JVM プロセス ステータス ツール) 指定されたシステム内のすべての HotSpot 仮想マシン プロセスを表示します。
jstat (JVM 統計監視ツール) HotSpot仮想マシンのさまざまな動作データを収集する
jinfo (Java の構成情報) 仮想マシンの構成情報を表示する
jmap(Javaのメモリマップ) 仮想マシンのメモリダンプスナップショット(ヒープダンプファイル)を生成する
jhat (JVM ヒープダンプ ブラウザ) メモリ ダンプ スナップショットを分析します。推奨されません。リソースを消費し、速度が遅くなります。
jstack (Java のスタック トレース) VMのスレッドのスナップショットを表示する
Jコンソール JMXビジュアル管理ツール
ビジュアルVM オールインワン障害管理ツール

いくつかの一般的なツールがリストされています。実際には、JDK に付属するツールよりも優れたツールがいくつかあります。今後の記事でそれらをリストします。さて、これらのツールの機能とその使用方法を 1 つずつ分析してみましょう。

2. ツール

1. jps: 仮想マシンプロセスステータスツール

jps は主に、JVM で実行されているプロセスのステータス情報を出力するために使用されます。構文の形式は次のとおりです。

  1. jps [オプション] [ホストID]
  2. 最初のパラメータ: オプション
  3.  
  4. -q はクラス名、Jar 名、およびメインメソッドに渡されるパラメータを出力しません。
  5. -mはメインメソッドに渡されたパラメータを出力します
  6. -l メインクラスまたはJarの完全修飾名を出力します
  7. -vはJVMに渡されたパラメータを出力します
  8. 2番目のパラメータ: ホストID

ホストまたはサーバーの ID。指定されていない場合は、現在のホストまたはサーバーがデフォルトになります。

Windows 10 でテストしました。もちろん、Linux でも試すことができます。方法は同じですが、結果は異なる場合があります。テストするには、さまざまなパラメータ オプションを選択できます。 CMDを開いて対応するコマンドを入力します

2. jstack: スタックトレースツール

jstack は、現時点での仮想マシンのスレッド スナップショットを生成するために使用されます。構文の形式は次のとおりです。

  1. jstack [オプション] vmid
  2. 最初のパラメータ:オプション 
  3.  
  4. オプション効果
  5. -F 通常の出力要求に応答がない場合、スレッドスタックの出力を強制する
  6. -l スタック外のロックに関する追加情報を表示します
  7. -m ネイティブメソッドが呼び出された場合、C/C++ スタックを表示します。
  8. 2番目のパラメータ: vmid

vmid は Java 仮想マシン ID であり、通常は Linux/Unix システム上のプロセス ID です。

CMDで直接操作してみましょう:

3. jstat: 仮想マシン統計監視ツール

jstat は、仮想マシンのさまざまな動作状態情報を監視し、ローカルまたはリモートの仮想マシン プロセスにおけるクラスのロード、メモリ、ガベージ コレクション、JIT コンパイルなどの動作データを表示できます。構文の形式は次のとおりです。

  1. jstat [ 一般オプション |出力オプション vmid [間隔] [回数]]
  2. 最初のパラメータ: generalOption |出力オプション

このパラメータによって表されるオプションは、ユーザーが照会する仮想マシン情報を表し、クラスのロード、ガベージ コレクション、およびランタイム コンパイル ステータスの 3 つのカテゴリに分かれています。

2番目のパラメータ: vmid

vmid は Java 仮想マシン ID であり、通常は Linux/Unix システム上のプロセス ID です。

3番目のパラメータ: 間隔

間隔はサンプリング時間間隔であり、

4番目のパラメータ: count

カウントはサンプルの数を示します。

次に、このツールを使用して、CMD を開き、対応するコマンドを入力します。

4. jinfo: 仮想マシンのパラメータをリアルタイムで表示および調整する

コマンド形式:

  1. jinfo [オプション] pid

最初のパラメータ: オプション

  1. オプション効果
  2. -v 仮想マシンの起動時に指定されたパラメータリストを表示します
  3. -flag 仮想マシンの起動時に指定されていないパラメータのデフォルト値を表示します
  4. -sysprops は仮想マシンプロセスの System.getProperties() の内容を出力します。

2番目のパラメータ: pid

表示するプロセス ID を指定します。

CMDでテスト:

5. jmap: 仮想マシンのメモリダンプスナップショット(ヒープダンプファイル)を生成する

jmap (Java 用メモリ マップ) は、ヒープ ダンプのスナップショット (通常はヒープダンプまたはダンプ ファイル) を生成するために使用されます。 jmap コマンドが適用できない場合は、-XX:+HeapDumpOnOutOfMemoryError パラメータを使用して、仮想マシンのメモリがオーバーフローしたときにスナップショットを生成できます。または、kill -3 pid を使用して生成することもできます。 jmap の役割は、ダンプ ファイルを取得することだけではありません。また、スペースの使用状況や現在使用中のコレクターなど、ファイナライズ実行キュー、Java ヒープ、永続世代に関する詳細情報を照会することもできます。コマンドの形式は次のとおりです。

  1. jmap [オプション] vmid

最初のパラメータ:

2番目のパラメータ: vmid

vmid は Java 仮想マシン ID であり、通常は Linux/Unix システム上のプロセス ID です。

cmdでテスト:

6. jhat: メモリダンプスナップショットを分析するが、推奨されないし、遅い

このツールは機能が比較的単純で、実行に時間がかかるため、使用はお勧めしません。 MATが推奨されます。

7. JConsole: JMX のビジュアル管理ツール

以前のツールと比較すると、このツールはより頻繁に使用され、非常に重要です。さまざまなデータをグラフィカルに表示できる Java GUI 監視ツールです。また、リモート接続を通じてリモート サーバー VM を監視することもできます。 VM およびリモート VM を監視するために使用される、Java で記述された GUI プログラム。非常に使いやすく、非常に強力な機能を備えています。

cmd に jconsole と入力し、プロセスを選択します。 (前提として、スレッドを作成し、IDE ツールで実行します)

次に、対応するオプションを選択すると、このツールに入ると次のインターフェイスが表示されます。

そこにはメニューがあり、そのうちの 1 つを選択して表示できます。このツールは非常に使いやすく、私が以前に最も頻繁に使用したツールでもあります。

8. VisualVM: オールインワンの障害管理ツール

このツールも非常に強力です。これは、ローカルおよびリモート データを表示できるグラフィカル インターフェイスに基づく JAVA GUI 監視ツールです。 Jvisualvm は jconsole と同じように使用されます。コマンドラインに jvisualvm と入力して起動できます。 jvisualvm インターフェースはより美しく、データはよりリアルタイムです。

上部には、表示するさまざまなオプションを選択できるメニューもあります。自分で試してみるのが一番です。

結論

これらのツールについて私が言いたいことはこれだけです。記事の冒頭で、JDK には非常に多くのツールが付属しており、JDK バージョンの継続的な更新によりツールも増えていることがわかりました。それぞれを習得するには時間がかかりすぎます。遭遇した問題を検索し、どのようなツールが使用できるかを確認できます。リストされているツールは、初心者に適しています。

この記事はWeChat公式アカウント「Yugong Yaoyishan」から転載したものです。下のQRコードからフォローできます。この記事を転載する場合は、Yugongyaoyishanの公式アカウントまでご連絡ください。

<<:  エッジコンピューティングの概要を1分で簡単に理解する

>>:  クラウドの自動化は重要

推薦する

山西省陽泉市が変わる!百度と提携し、中小都市のスマートシティ実証モデルを構築

12月17日、百度は山西省陽泉市人民政府と戦略協力協定を締結した。双方は協力して、百度脳、自動運転、...

標準相互接続 - 35元/1gメモリ/10gハードディスク/3M帯域幅 サウスウェストテレコム/1M帯域幅 香港葵涌BGP

襄陽白世創運傘下のクラウドコンピューティングサービスブランドであるStandard Intercon...

セキュリティ保護されていない WiFi で安全にインターネットを閲覧する方法

2015年のCCTV 315 Galaで、CCTVは無料WiFiの危険性を暴露しました。ユーザーが携...

Digitalocean シンガポールデータセンター VPS が利用可能になりました

digitalocean はついにシンガポールのデータセンターに VPS を導入しました。ご興味があ...

草の根ウェブマスターはモバイルインターネットの課題に直面:PCトラフィックは停滞

[概要] ウェブマスターがアプリを作成する場合、配布コストが高く、インストール率や起動率が低いなどの...

タオバオセレブライブストリーミングの簡単な歴史

今年のダブルイレブンは、タオバオ14年間で初めて売上高が公表されていないダブルイレブンだが、タオバオ...

losangelesvps: 40% 割引コード、ロサンゼルス VPS、1Gbps 帯域幅、無制限トラフィック、Windows 付き

losangelesvps が HostCat にメッセージを送信しました: 公式が HostCat...

Z-Blogの使用経験

2018年最もホットなプロジェクト:テレマーケティングロボットがあなたの参加を待っています以前、私は...

Baidu のネットワークプロモーションでよく使用されるリソースの一覧

ウェブサイトが利益を上げたり、人々に何らかの意味を伝えたりしたい場合、より多くの人々にウェブサイトを...

デコレーションマップのウェブサイトで1ヶ月間のサイト最適化の体験を共有する

1か月間、サイトを中心に最適化を行った後、ランキングは急速に上昇し、トラフィックは5〜6倍に増加しま...

2023 年の成長を牽引する 5 つの主要なデジタル トレンド

今日、あらゆる業界の企業は、厳しい労働環境と予測不可能な経済情勢の中で繁栄するために、大きな課題に直...

WeChatの運営に関するあまり知られていない興味深い事実、WeChatの宣伝と運営方法

上記のクールで少しよそよそしいフォーマットはどうやって作成したのですか?公式アカウントの品質向上に役...

何?ネットワーク カードも仮想化できますか?

01 macvlan の紹介前回の記事では、tap/tun、veth-pair、bridge といっ...

fadayun: 9.9元のフラッシュセール、湖北100G高防御/CC無視、2Gメモリ/2コア/50gハードディスク/8M帯域幅、香港/韓国/米国CN2クラウドは39元から

fadayunは現在、春のスタートに向けて特別プロモーションを開催しています。湖北クラウドサーバーは...

A5論文作成から得た「執筆経験」の分析

世の中のあらゆるものは発展しています。この言葉はまさに真実です。2009 年、Taoke は人気商品...