javaの - 仮想マシンのパフォーマンス監視とトラブルシューティングツール

背景

  多くの場合、プロジェクトの開発にプロジェクト全体を完了するために人が、チームによって開発された、とプログラマビリティチームのメンバーは、必然的にプロジェクトムラのパフォーマンスに影響を与えます。製品の基本的な形状は、このような応答時間の損失、システムカトンやその他の問題として理想的なプロジェクトではありません後にプロジェクトが必然的に生じてしまうとき。全体的なアプリケーションの詳細な分析が必要で、この時点で。アナリストのすべてのプロジェクトの詳細ではなく、すべての知られているとおり、あなたは、特定のデータを抽出するために、いくつかの補助的なツールを必要とするJVM(例えば、メモリのGCの頻度分布)、そのデータ解析のタイプ。このような状況のアプリケーションを引き起こす主な理由の正確な位置決め。そして、その上のトラブルシューティングやパフォーマンスチューニングの特定との理由から。いくつかのツールは非常に安定して強力であるので、実際には、SunのJDKのトラブルシューティングアプリケーションパフォーマンスの問題を突き止めるに重要な役割を再生することができ、私たちのために早期の準備ができて

JPS

JVMプロセスステータスJPSフルネームは、コマンドラインツールの情報を取得するために使用されるJDK Javaアプリケーション・プロセスを提案する名前です。JavaアプリケーションはJPSことによって得ることができるプロセスID番号、main()関数クラスパスと他の起動情報をコマンド。
JSP形式:
  JPS [オプション] [PID]

オプション 効果
-q 出力のみlvmidは(プロセスID)は、メインクラスの名前が省略されています
-m 仮想マシンプロセスに渡された出力パラメータは、マスタークラスメインを開始()関数
-l マスタークラスの出力、プロセスが実行された場合ジャーパッケージ、ジャー出力パスのフルネーム
-v 仮想マシンプロセスの出力は、JVMパラメータを開始すると

JSTAT

JVM統計JSTATコマンドラインツールの監視ツールの完全な名前は、そのようなクラスのロード、メモリ情報、ガベージコレクションなど、さまざまなJavaアプリケーションのステータス情報を取得するために使用されます。
JSTATフォーマット:
  JSTAT [オプション] [<間隔> [<数>]]
  パラメータを省略した場合、これら2つのパラメータの代わりにクエリは一度しか照会し、間隔および代表クエリ間隔の回数をカウントして。

オプション 効果
-クラス 監視クラスのロード、総容量の荷降ろし量、およびそれがクラスをロードするのにかかる時間
-gc 永久世代の容量、使用領域、GCの合計時間情報などのJavaヒープエデン領域を含む状態監視、2つのサバイバー地区、古い時代、
-gccapacity コンテンツを監視し、基本的に同じ-GCが、出力は、主にJavaを使用懸念されている最大値に各領域をヒープ、最小スペース
-gcutil コンテンツを監視し、基本的には同じことを-GCが、出力は合計領域の割合の利用が注目されています
-gccause 関数-gcutilと一致しますが、最後のGCによって生成された追加の出力を発生します
-gcnew GCは、新世代の状態を監視します
-gcnewcapacity コンテンツを監視し、基本的には同じことを-gcnew、最大限に大きな懸念の出力を使用して、最小スペース
-gcold GC古いの状態監視
-gcoldcapacity コンテンツを監視し、基本的にスペースの最小値と最大値を使用する主要な関心事のと同じ、出力を-gcold
-gcpermcapacity 発電出力は恒久的に最大、最小のスペースを使用するには
-コンパイラ JITコンパイラの出力コンパイル方法、時間がかかり、他の情報
-printcompilation 出力は、JITコンパイルされたメソッドとなっています

サンプルを実行JSTAT

jstat -gc 25582
 S0C    S1C    S0U    S1U      EC       EU        OC       OU       MC     MU    CCSC   CCSU    YGC     YGCT    FGC    FGCT     GCT   
5120.0 5120.0  0.0    0.0   32768.0   9736.9   86016.0     0.0     4480.0 873.2  384.0   74.6    0      0.000    0     0.000    0.000

S0C、S1C、S0U、S1U:Survivor 0/1区容量(Capacity)和使用量(Used)
EC、EU:Eden区容量和使用量
OC、OU:年老代容量和使用量
MC、MU:元空间容量和使用量
CCSC、CCSU:[CompressedClassSpaceSize]压缩类空间容量和使用量
YGC、YGT:Young GC次数和Young GC耗时
FGC、FGCT:Full GC次数和Full GC耗时
GCT:GC总耗时即Young GC与Full GC总耗时
jstat -gcutil 25582
  S0     S1     E      O      M     CCS    YGC     YGCT    FGC    FGCT     GCT   
  0.00   0.00  29.71   0.00  19.49  19.43      0    0.000     0    0.000    0.000
与上述一致分别代表的是使用百分比
jstat -gccapacity 25582
 NGCMN    NGCMX     NGC     S0C   S1C       EC      OGCMN      OGCMX       OGC         OC       MCMN     MCMX      MC     CCSMN    CCSMX     CCSC    YGC    FGC 
 43008.0 680960.0  43008.0 5120.0 5120.0  32768.0    86016.0  1362944.0    86016.0    86016.0      0.0 1056768.0   4480.0      0.0 1048576.0    384.0      0     0
NGCMN:新生代最小容量
NGCMX:新生代最大容量
NGC:当前新生代容量

Jinfoの

Jinfoの(Java用の構成情報)このコマンドは、ビューに使用し、パラメータのJavaアプリケーション立ち上げ調整される
Jinfoのコマンド形式を:
  Jinfoの[オプション] PID

オプション 効果
-国旗 あなたはパラメータを変更したい場合は、アプリケーションの起動を見ながら-flag名によって得られたパラメータ値は、また-flag名前=値によって変更することができます
-sysprops アプリケーションプロセスSystem.getPropertis()コンテンツを印刷します

jmapの

jmapの(Java用のメモリマップ)このコマンドは、主に、スタックなどの中に分散Javaアプリケーション・ヒープ・メモリ、表示メモリ情報を生成するために使用されます。
jmapのフォーマット:
    jmapの[オプション] PID

オプション 効果
-投げ捨てる Javaのヒープダンプのスナップショットを生成します。フォーマット:-dump:[ライブ、]フォーマット= B、ファイル= 唯一の生きるダンプのサブパラメータは、オブジェクトが生きているかどうかを示します。
-finalizerinfo F-キュー内のファイナライズ処理ファイナライザスレッドを実行するために、表示オブジェクトを待ちます。
-ヒープ このような設定、世代状況パラメータ使用の回復などのJavaヒープショーの詳細、。
-histo 表示ヒープ統計は、クラス、インスタンスの数、総容量を含め、オブジェクト。
-permstat クラスローダは、国家を代表して統計的な永久メモリを示すことです。
-F 応答しないの場合は、仮想マシンのプロセス-dumpオプションは、ダンプのスナップショットを強制するために、このオプションを使用することができます。

jmapのエクスポート・ダンプ・ファイル

jmap -dump:format=b,file=out.bin 25582
Dumping heap to /root/out.bin ...
Heap dump file created

JT

jhat(JVMヒープ解析ツール)このコマンドは、主にjmapは、ダンプファイルを解析している、とHTTPアプリケーションを起動し、簡単なビジュアルコンテンツファイルダンプビューブラウザ。

jhat /root/out.bin 
Reading from /root/out.bin...
Dump file created Sun Jan 19 00:05:08 CST 2020
Snapshot read, resolving...
Resolving 201499 objects...
Chasing references, expect 40 dots........................................
Eliminating duplicate references........................................
Snapshot resolved.
Started HTTP server on port 7000
Server is ready.

このとき、ブラウザを介して7000アクセスポートは、結果を表示します。

jstack

jstack(Java用スタック・トラック)このコマンドは、主に、スタックのスナップショットのJavaアプリケーションスレッドを生成するために使用されます。長い休止の原因を見つけることができるスレッドなどにより、このようなスレッドが長いポーズの一般的な原因であるなどの外部リソースに長い時間のための要求を待っているスレッド、無限ループとの間のデッドロックなどのスレッドのスタックのスナップショットに応じて発生します。
jstack形式:
     jstack [オプション] PID

オプション 効果
-F 要求が出力に正常な応答でない場合は、出力スレッドスタックを強制
-l スタックに加えて、ロックに関する追加情報を表示
-m ローカルメソッドの呼び出した場合は、C / C ++のスタックを表示することができます

()メソッドは、アプリケーションがすべてのスレッドのスタック情報のStackTraceElementことをJavaコードでgetAllStackTracesのjava.lang.Threadの全スレッドオブジェクト得ることができます。

 

参照

おすすめ

転載: www.cnblogs.com/cjunn/p/12210430.html