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分で簡単に理解する

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

推薦する

ウェブサイトと検索エンジンを正しく理解する方法

多くのウェブサイトには一定の PR 値があります。実際、PR 値は Google がウェブサイトの品...

英語のSEOケースの運用経験

ロビンは最近、英語の SEO プロジェクトに取り組んでいます。関連データを観察し、いくつかの戦略を実...

民間医療業界でランキングを上げるために短い言葉を使う方法

多くのウェブマスターは、民間医療業界における短い単語を懸念しています。なぜなら、多くの短い単語を思い...

WeChatパブリックアカウント広告プロモーションの完全ガイド!

エンタープライズシンクタンクが発表したデータによると、2016年12月時点で、 WeChatの月間ア...

張青:コンテンツの観点からタオバオのサプライネットワークを分析

コンテンツの観点からタオバオのサプライネットワークを分析するコンテンツは王様という言葉は、ウェブマス...

Baidu のアルゴリズムはウェブサイトのユーザーエクスペリエンスをどのように判断するのでしょうか?

私たちの SEO の観点からすると、最高の SEO とは優れたユーザー エクスペリエンスを提供するこ...

マーケティングにおける「存在感」の重要性を例を通して簡単に分析する

地球上の誰もが知っているチャイナモバイルやチャイナテレコムのような企業は、なぜ莫大な費用を広告に費や...

#黒5# ftpit: 35% オフのプロモーション、512M メモリ KVM がたったの 1.75 ドル、ロサンゼルス/ニューヨーク

ftpit は来年のブラック フライデーのプロモーションを発表しました。KVM と OpenVZ の...

Googleは昨年、検索アルゴリズムを450回調整した。

Google は社内の仕組みについて口を閉ざしていることで知られているが、うっかり漏れてしまうような...

中小電子商取引企業の運命は様々、威面の倉庫は閉鎖

JD.comとSuningのプロモーション戦争の盛り上がりの裏では、国内の中小電子商取引企業の生存状...

ZhongAn Tianxia が新世代の SaaS セキュリティ サービス プラットフォームを開始

さまざまな業界でデジタル化、インテリジェント化が進むにつれ、クラウドコンピューティング、ビッグデータ...

hostus-4 コア/3IP/6g メモリ/150g ハードディスク/5T トラフィック/700m ポート

高リソースの VPS にあまりお金をかけたくない場合は、次の 2 つの VPS が適している可能性が...

ウェブスパイダーはどのようにしてウェブサイトを収集し、更新するのでしょうか?

インターネット コンテンツの更新プロセスでは、企業の Web サイトのスナップショットの更新を確実に...

優れたシングルページウェブサイトをデザインするための6つのユニークなヒント

シングルページのウェブサイトは誰からも人気があり、それがもたらす商業的価値が人々を惹きつける交差点と...

クラウドに移行する前に考慮すべき重要な要素

クラウドへの移行が賢明な選択である理由は何ですか?どの企業にもクラウドに移行する理由があります。しか...