序文
この記事では、主にJava仮想マシンの障害処理ツールを紹介します。記事に記載されているこれらのツールには次のものがあります。
| 名前 | 主な関数 |
| JPS | JVMプロセスステータスツールは、指定されたシステムにすべてのホットスポット仮想マシンプロセスを表示します。通常、ローカルホスト |
| jstat | JVM統計監視ツール、ホットスポット仮想マシンのあらゆる側面の動作データを収集するために使用される |
| ジンフォ | Javaの構成情報、仮想マシン構成情報を表示します |
| jmap | Javaのメモリマップは、仮想マシンのメモリストレージスナップショット(HeapDumpファイル)を生成します |
| Jhat | JVMヒープダンプブラウザーは、HeapDumpファイルを分析するために使用されます。 HTTP/HTMLサーバーを確立し、ユーザーがブラウザで分析結果を表示できるようにします。 |
| jstack | Javaのスタックトレース、仮想マシンのスレッドスナップショットを表示します |
JPS:仮想マシンプロセスステータスツール
JPSの関数は、Unix/LiunxのPSコマンドに似ています。実行中の仮想マシンプロセスを印刷し、仮想マシン実行メインクラスの名前とこれらのプロセスのローカル仮想マシンの一意のIDを表示します(ローカル仮想マシン識別子、LVMID、通常はシステムプロセスID)。
JPSコマンド形式:
JPS [options] [HOSTID]
JPSは、RMIプロトコルを介してRMIサービスのリモート仮想マシンプロセスステータスを照会でき、HostIDはRMIレジストリに登録されているホスト名です。
JPSその他の一般的なオプション:
-Q出力lvmidのみ、メインクラスの名前を省略します。
-m出力パラメーターは、仮想マシンプロセスが開始されたときにメインクラスのメイン()関数に渡されました。
-lメインクラスのフルネームを出力します。プロセスがJARパッケージを実行する場合、JARパスを出力します。
-v出力JVMパラメーター仮想マシンプロセスが開始されたとき。
JPSコマンドサンプル:
[root@localhost〜]#jps -l3914 org.zhangyoubao.payservice.app12180 sun.tools.jps.jps6913 org.zhangyoubao.userprofiler.app
JSTAT:仮想マシン統計監視ツール
JSTATは、仮想マシンのさまざまな動作ステータス情報を監視するために使用されるツールです。ローカルまたはリモートの仮想マシンプロセスでクラスロード、メモリGC.jitなどの実行パラメーターを表示できます。
JSTATコマンド形式:
jstat [option vmid [interval [s | ms] [count]]]
間隔とカウントは、クエリ間隔と時間を表します。これらの2つのパラメーターが省略されている場合、それは一度だけクエリをすることを意味します。
JSTATの他の一般的に使用されているオプション:
-classクラスの負荷/アンロード数と総スペース負荷時間を監視します。
-Compilerは、JITコンパイラによって編集されたメソッド、時間のかかる情報、およびその他の情報を出力します。
-PrintCompilate JITコンパイルされたメソッドを出力する方法。
-GCは、Javaヒープのステータスを監視します。
-gccapacity監視コンテンツは基本的に-gcと同じですが、出力はJavaの各領域の最大/最小スペースに焦点を当てています。
-gcutil監視コンテンツは基本的に-gcと同じですが、出力はスペースの使用に焦点を当てています。
-gccause -gcutil関数のように、追加の出力は最後のGCを引き起こします。
-GCNEWは、新世代のGCSのステータスを監視します。
-gcnewcapacityは新世代を監視し、-gccapacityと同じ出力を監視します。
-GCOLDは、高齢者のGCステータスを監視します。
-gcoldcapacityは高齢者を監視し、-gccapacityと同じように出力します。
-gcpermcapactiyは、恒久的な発電(コード領域)を監視し、-gccapacityと同じ出力を監視します。
JSTATコマンドサンプル:
[root@localhost〜]#jstat -GC 6913 S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 34048.0 34048.0 0.0 3217.8 272640.0 171092.7 683264.0 168910.7 46872.0 28031.7 46872.0 28031.2 37857 380.644 69 3.447 384.091
JINFO:Java構成情報ツール
JINFOの機能は、仮想マシンのさまざまなパラメーターをリアルタイムで表示および調整することです。
JINFOコマンド形式:
jinfo [option] pid
JINFOの他の一般的に使用されているオプション:
-flag name = valueパラメーターを変更します
-FLAG名パラメーターパラメーター
サンプルJINFOコマンド:
[root@localhost〜]#JINFO 6913ATTACHING ID 6913を処理するために、待ってください...デバッガー添付を正常に添付してください。Serverコンパイラが検出されました。 -dserver.root =/usr/local/user_profiler -dcom.sun.management.jmxremote.port = 7003 -dcom.sun.management.jmxremote.ssl = false -dcom.sun.managee.jmxremote.authenticate = false -vervose:gc -xx:+printgcdetails -xx:+printgcdatestamps -xx:+useconcmarksweepgc
JMAP:Javaメモリマッピングツール
JMAPコマンドを使用して、ヒープストレージスナップショット(ファイルのダンプ)を作成できます。また、最終キュー(セルフセーブキュー)、Javaヒープ、コードエリアの詳細を確認することもできます。
JMAPコマンド形式:
jmap [option] vmid
JMAPの他の一般的に使用されるオプション:
-Dump Javaヒープストレージのスナップショットを生成します。フォーマット:-dump:[live、] format = b、file = <filename>;
-finalizerinfoファイナライザー現象がファイナライズメソッドを実行するのを待っているF-queueでオブジェクトを表示します。
-HEAP Javaヒープの詳細情報を表示します。これは、リサイクル業者のタイプ、パラメーター構成、世代のステータス待機などです。
-histoは、クラス、インスタンスブック、総容量など、ヒープ内のオブジェクトの統計を表示します。
-permstat classloaderを統計ポータルとして使用して、永続的な生成メモリ情報を表示します。
-f仮想マシンプロセスヒープダンプオプションが応答しない場合、このオプションを使用してダンプスナップショットを強制することができます。
JMAPコマンドサンプル:
[root@localhost〜]#jmap -histo 6913 | head -20 num #instances#bytesクラス名--------------------------------------------------------------------------------------------------------------------------------------------------- 201846 49201192 [B 3:1597065 38329560 Java.lang.-StringStringString 15037056 org.zhangyoubao.thriftdef.userusefulinfo 5:47104 11072048 [i 6:268631 8596192 java.util.hashmap $エントリ7:48812 7451760 <constmethklass> 8:100683 643712 com.mysql.jdbc.connectionpropertiesimpl $ booleanconnectionproperty 9:48812 6257856 <Methodklass> 10:4230 5271640 <consternpoolklass> 11:159491 5103712 Java.util.util.util.util.util.util. org.zhangyoubao.common.cache.adv.node 13:127027 4064864 java.util.concurrent.concurrenthashmap $ hashentry 14:230433 3686928 java.lang.integer 15:3765 com.mysql.jdbc.field 17:4230 2943840 <InstanceKlassklass>
ここで[C=char[],[B=byte[],[S=short[],[I=int[],[[I=int[][] 。
JHAT:仮想マシンヒープ転送スナップショット分析ツール
JHATコマンドはJMAPと組み合わせて使用され、JMAPによって生成されたダンプファイルの分析に使用されます。 JHATには、ミニHTTP/HTMLサーバーが組み込まれています。分析後、生成されたダンプファイルの結果はブラウザで表示できます。
JHATコマンド形式:
JMAPファイル名
JHATコマンドサンプル:
[root@localhost〜]ポート7000ServerのHTTPサーバーの準備ができました。
JSTACK:Javaスレッドスタックトレースツール
JStackは、仮想マシンの現在の時刻のスレッドスナップショットを生成するために使用されます。スレッドスナップショットは、現在の仮想マシンの各スレッドが実行しているメソッドスタック計画です。スレッドスナップショットを生成する主な目的は、スレッドが長い間一時停止される理由を見つけることです。スレッドが一時停止したら、jstackを使用して、バックグラウンドで反応しないスレッドが何をするか、またはリソースが待っていることを確認します。
jstackコマンド形式:
jstack [option] vmid
jStackその他のオプション:
-f通常の出力要求が応答されない場合、スレッドスタックを出力します。
-lスタックの表示に加えて、ロックに関する追加情報を表示します。
-mローカルメソッドが呼び出された場合、C/C ++のスタックを表示できます。
jstackコマンドサンプル:
[root@localhost〜]#jStack 29577 | head -202016-11-23 12:58:23fullスレッドダンプOpenJDKサーバーVM(24.91-B01混合モード): "Pool-1-thread-7261" prio = 10 tid = 0x0893a400 nid = java.lang.thread.state:sun.misc.unsafe.park(native method)のtimed_waiting(駐車場) - 駐車場java.util.concurrent.locks.locksupport.parknanos(locksupport.java:226)at java.util.concurrent.synchronousqueue $ transferstack.awaitfulfill(synchronousqueue.java:460) java.util.concurrent.synchronousqueue $ transferstack.transfer(synchronousqueue.java:359)at java.util.concurrent.synchronousqueu.poll(synchronousqueue.java:942)at java.util.concurrent.threadpoolexecutor.gettask(threadpoolexecutor.java:1068)at java.util.concurrent.threadpoolexecutor.runworker(threadpoolexecutor.java:1130)at java.util.concurrent.threadpoolexecutor $ worker.run(threadpoolexecutor.java:615)at java.lang.thread.run(thread.java:745) "service_hot_lscs-0" daemon prio = 10 tid = 0x6982dc00 nid = 0x64cebbed adition with wait on wait on with wait on adition java.lang.thread.state:java.lang.thread.sleep(ネイティブメソッド)でorg.zhangyoubao.video.client.runner.simplevideorunner.dowork(simplevideorunner.java:150)でjava.lang.thread.sleep(ネイティブメソッド)でtimed_waiting(sleeping)
要約します
上記は、この記事のコンテンツ全体です。この記事の内容があなたの研究や仕事に役立つことを願っています。ご質問がある場合は、メッセージを残してコミュニケーションをとることができます。