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

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

推薦する

キーワードをマイニングする代替的だが効率的な方法

ウェブサイトを構築する前に、常により良い、より多くのキーワードを選択してください。キーワードマッチン...

完璧なページ依存関係

インターネット マーケティングは、さまざまな Web サイト間の接続を構成する多数のページで構成され...

#48 時間: WLS - $19/年/メモリ 1g/SSD 30g/トラフィック 2T/(複数の特別価格 VPS)

Weloveservers の 6 月のプロモーションは、残り 48 時間未満で終了しそうです。安価...

「2021 年の調査データの傾向を見て、企業のデジタル変革におけるクラウドの道を解釈する」

クラウド コンピューティングは、当初の構想から今日の広範な実装に至るまで、企業向けクラウド コンピュ...

クラウドネイティブ:家を購入してからオープンするまでのストーリー

[[410627]]この記事はWeChat公式アカウント「ネット事情は煙と雲のよう」から転載したもの...

ウェブマスターはYixinのマーケティングに惑わされてはいけない

今日、私は A5 Webmaster Network の編集者である Cancan とチャットをしま...

NetEase Cloudは業界のニーズに応えて高品質の顧客にサービスを提供し、金融業界の「インターネットサーフィン」を支援します。

金融とテクノロジーの組み合わせにより、金融サービスの境界が大幅に拡大し、包括的な金融が多数の小規模お...

企業向けWeChatパブリックプラットフォームで効果的なオンラインマーケティングを実施する方法

SEO 業界では、「コンテンツこそが王様」という言葉がよく使われます。この言葉は、検索エンジンには常...

Shopex モールのウェブサイトの SEO 最適化に関する経験の共有

Shopexオンラインストアシステムは、中国で最も広く使用されているオンラインストアシステムです。そ...

ソフトな物品の影響は悪化している

ソフト記事はもともと非常に優れたマーケティングおよびプロモーション手法でしたが、残念ながら、ソフト記...

電子商取引ウェブサイトの SEO 最適化戦略とネットワーク マーケティングの共有

電子商取引は今後のビジネス発展のトレンドであり、鄭州地元企業が解決しなければならない緊急の問題でもあ...

クラウドサーバーの推奨

海外クラウドサーバーのおすすめ(良心):どのクラウドサーバーが良いですか?どのクラウドサーバーの方が...

ネットワークマーケティングブランド確立の運営コンセプトと実行戦略について語る

インターネット マーケティング ブランドを確立するための運用コンセプトと実行戦略を見てみましょう。運...

マイクロサービス展開モデルの紹介

マイクロサービスをデプロイするいくつかの方法を見てみましょう。マイクロサービスは、大規模で複雑なアプ...