プログラムにバグはありますか?これらのJVMツールはトラブルシューティングに役立つ可能性があります

プログラムにバグはありますか?これらのJVMツールはトラブルシューティングに役立つ可能性があります

[[373685]]

日々の開発では、メモリリーク、デッドロック、CPU など、さまざまな問題に常に遭遇します。問題に遭遇することは怖いことではありません。重要なのは、これらのエラーをどのようにトラブルシューティングし、適切な解決策を見つけるかです。しかし、多くの人々は、これらの問題の根本的な原因を見つけることができないことがよくあります。したがって、この記事の主な目的は、問題がどこにあるのかを分析するためのツールを習得できるようにすることです。

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

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

まず、これから説明するツールの概要を説明し、次にそれらを 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の公式アカウントまでご連絡ください。

<<:  クラウドコンピューティングの導入は単なる紙上の作業ではない

>>:  2021 年に注目すべき 8 つのエッジ コンピューティング トレンド

推薦する

360 Searchと民間病院の関係

インターネットは退屈ですが、素晴らしいものでもあります。最新のインターネットのハイライトに投票すると...

半年以上Web業界に携わってきて、色々な思いが溢れています!

昨年ウェブサイトを立ち上げてから半年が経ちました。現在、両方のウェブサイトが安定して稼働しています。...

自然、実用主義、責任が2012年のSEOに対する私の理解を構成しています

2012 年が過ぎようとしています。2013 年という新しい年を迎え、ウェブマスターの皆さんは将来に...

トラフィックの 90% は検索エンジンから来ているのに、なぜまだスパム サイトなのでしょうか?

Baidu で「ジャンクサイト」を検索すると、ジャンクサイトの 2 種類の結果が返されました。1 つ...

コンテンツ+内部リンク+外部リンクが連携して、ウェブサイトを素早くインデックスに登録します。

ウェブサイトの登録は、私たちウェブマスターがウェブサイトを構築するための最も基本的な要件です。ウェブ...

#ion#: シンガポール VPS、オプション回線: PCCW/China Mobile/シンガポール CN2、Alipay 決済

Krypt の ion は新しいシンガポール データ センターを追加し、今回は PCCW、China...

SEO の回答: URL のランキングが常に間違っているのはなぜですか?

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

#100Gddos 保護-spartanhost-E3-1230v3/16g メモリ/1T ハードディスク/G ポート/シアトル

私が Spartanhost を推奨する理由は単純です。超安価な DDoS 保護、つまり基本的に無料...

ウェブサイト構築に不可欠な3つの要素:アイデア、コンテンツ、実行

私は数年間、一般的な中小企業のウェブサイト、トラフィック ウェブサイト、Taobao アフィリエイト...

Azure Spring Cloud アプリケーション サービスにお問い合わせください

[51CTO.com クイック翻訳] 近年、Javaは企業で広く使用され続けています。たとえば、Li...

グリーンラディッシュアルゴリズムはいつも私に思い出させる

これは非常に古い話題です。Baiduは2013年2月19日に公開プラットフォームで新しいアルゴリズム...

中国のバレンタインデーに向けて電子メール マーケティングを革新するにはどうすればよいでしょうか?

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

チャンネルプロモーション: あなたが知らないことはすべてここにあります

彼はかつて大手インターネット企業に勤務し、そこで広告事業を担当していました。年間の広告費は1500万...

VAICDN: 超高防御\超高帯域幅、統合CDN、香港CN2などの複数のハイエンドノード、グローバル高速アクセス

vaicdn はコア CDN サービスに重点を置いており、ドメイン名への直接アクセスを提供し、「ブロ...

Lu Songsong のブログにおける SEO 外部リンクの役割

「2011年、SEOは『外部リンクの掲載』となり、オンラインプロモーションは『外部リンクの掲載』とな...