名前
jstat - JVM統計の監視
シノプシス
ノート: このコマンドは実験的なものであり、サポートされていません。
jstat
generalOptions
jstat
outputOptions [-t
] [-h
lines] vmid [interval [count]]
- generalOptions
- 単一の一般的なコマンドライン・オプション。 「一般オプション」を参照してください。
- outputOptions
-
-options
オプションによって報告されるオプション。 単一のstatOption
に加えて、-t
、-h
および-J
オプションのいずれかで構成される1つ以上の出力オプションです。 「jstatコマンドの出力オプション」を参照してください。 -t
- タイムスタンプ列を出力の最初の列として表示します。 タイムスタンプは、ターゲットJVMの起動時からの経過時間です。
-h
n-
n個のサンプル(出力行)ごとに列ヘッダーを表示します。ここで、nは正の整数です。 デフォルト値は
0
で、データの最初の行の列ヘッダーが表示されます。 - vmid
- 仮想マシン識別子。ターゲットのJVMを示す文字列です。 「仮想マシン識別子」を参照してください。
- interval
-
指定された単位でのサンプリング間隔。秒は(s)またはミリ秒(ms)。 デフォルトの単位はミリ秒です。 この値は、正の整数でなければなりません。 これが指定された場合、
jstat
コマンドは各間隔でその出力を生成します。 - count
-
表示するサンプルの数。 デフォルト値は無限大で、ターゲットJVMが終了するか、
jstat
コマンドが終了するまで、jstat
コマンドによって統計が表示されます。 この値は、正の整数である必要があります。
説明
jstat
コマンドは、設置されているJava HotSpot VMのパフォーマンス統計情報を表示します。 ターゲットJVMは、仮想マシン識別子またはvmid
オプションによって識別されます。
jstat
コマンドでは、一般オプションと出力オプションの2つのタイプのオプションがサポートされています。 一般オプションを使用した場合、jstat
コマンドは簡単な使用率およびバージョン情報を表示します。 出力オプションでは、統計データ出力の内容と形式を指定します。
すべてのオプションとその機能は、将来のリリースで変更または廃止される可能性があります。
一般オプション
一般オプションのいずれかを指定した場合、他のオプションまたはパラメータを指定できません。
-help
- ヘルプ・メッセージを表示します。
-options
- 統計オプションのリストを表示します。 「jstatコマンドの出力オプション」を参照してください。
jstatコマンドの出力オプション
一般オプションを指定しない場合に、出力オプションを指定できます。 出力オプションは、jstat
コマンドの出力の内容および形式を指定し、単一のstatOption
に加えて、その他のいずれかの出力オプション(-h
、-t
および-J
)で構成されます。 statOption
は最初に記述する必要があります。
出力は、各列が空白文字で区切られた表の形式で構成されます。 タイトル付きのヘッダー行は、各列の説明です。 -h
オプションを使用すると、ヘッダー行が表示される頻度を設定できます。 列ヘッダー名は、様々なオプション間で一貫性があります。 一般に、2つのオプションで同じ名前の列が使用されていれば、2つの列のデータ・ソースは同じになります。
-t
オプションを使用して、タイムスタンプ・カラムを出力の最初のカラムとして表示します。 Timestamp列には、ターゲットJVMの起動からの経過時間が秒単位で表示されます。 タイムスタンプの精度は、さまざまな要因によって異なり、大量の負荷のかかったシステムでのスレッド・スケジュールの遅延により変動します。
intervalおよびcountパラメータを使用して、jstat
コマンドがその出力を表示する頻度と回数をそれぞれ指定します。
ノート:
jstat
コマンドの出力を解析するためのスクリプトは記述しないでください。そのようなフォーマットは、将来のリリースでは変更される可能性があるためです。 jstat
コマンド出力を解析するスクリプトを記述する場合は、このツールの今後のリリースで変更される予定です。
-statOption
-
jstat
コマンドで表示される統計情報を決定します。 次のリストに、使用可能なオプションを示します。 特定のプラットフォームのインストールに関するオプションのリストを表示するには、一般オプション-options
を使用します。 「統計オプションと出力」を参照してください。class
: クラス・ローダーの動作に関する統計情報を表示します。compiler
: Java HotSpot VM Just-in-Timeコンパイラの動作に関する統計情報を表示します。gc
: ガベージ・コレクションが行われたヒープの動作に関する統計情報を表示します。gccapacity
: 世代と対応する領域の容量に関する統計情報を表示します。gccause
: ガベージ・コレクションの統計情報に関するサマリー(-gcutil
と同じ)を、直前および現在(適用可能な場合)のガベージ・コレクション・イベントの原因とともに表示します。gcnew
: 新規生成の動作に関する統計を表示します。gcnewcapacity
: 新しい世代および対応するスペースのサイズに関する統計情報を表示します。gcold
: 古い世代統計およびメタ領域統計の動作に関する統計情報を表示します。gcoldcapacity
: Old世代のサイズに関する統計情報を表示します。gcmetacapacity
: メタスペースのサイズに関する統計情報を表示します。gcutil
: ガベージ・コレクションの統計情報に関するサマリーを表示します。printcompilation
: Java HotSpot VMコンパイル・メソッドの統計情報を表示します。 -J
javaOption-
javaOptionをJavaアプリケーション起動ツールに渡します。 たとえば、
-J-Xms48m
と指定すると、スタートアップ・メモリーは48Mバイトに設定されます。 オプションの完全なリストについては、javaを参照してください。
統計オプションと出力
次の情報では、jstat
コマンドでstatOptionごとに出力される列のサマリーを示します。
-class
option-
クラス・ローダーの統計情報。
Loaded
: ロードされたクラスの数。Bytes
: ロードされたKB数。Unloaded
: アンロードされたクラスの数。Bytes
: アンロードされたKB数。Time
: クラスのロード処理およびアンロード処理の実行に要した時間。 -compiler
option-
Java HotSpot VM Just-in-Timeコンパイラの統計情報。
Compiled
: 実行されたコンパイル・タスクの数。Failed
: 失敗したコンパイル・タスクの数。Invalid
: 無効になったコンパイル・タスクの数。Time
: コンパイル・タスクの実行に要した時間。FailedType
: 最後に失敗したコンパイルのコンパイル・タイプFailedMethod
: 最後に失敗したコンパイルのクラス名とメソッド。 -gc
option-
ガベージ・ヒープ統計を収集しました。
S0C
: Survivor領域0の現在の容量(KB)。S1C
: Survivor領域1の現在の容量(KB)。S0U
: Survivor領域0の使用率(KB)。S1U
: Survivor領域1の使用率(KB)。EC
: Eden領域の現在の容量(KB)。EU
: Eden領域の使用率(KB)。OC
: Old領域の現在の容量(KB)。OU
: Old領域の使用率(KB)。MC
: Metaspaceコミット済サイズ(KB)。MU
: メタスペースの使用率(KB)。CCSC
: 圧縮クラス・コミット・サイズ(KB)。CCSU
: 圧縮されたクラス・スペースで(KB)が使用されました。YGC
: 若い世代のガベージ・コレクションの(GC)イベントの数。YGCT
: Young世代のガベージ・コレクション時間。FGC
: フルGCイベントの数。FGCT
: フル・ガベージ・コレクションの時間。GCT
: ガベージ・コレクションの総時間。 -gccapacity
option-
メモリー・プールの世代および領域の容量。
NGCMN
: New世代の最小容量(KB)。NGCMX
: New世代の最大容量(KB)。NGC
: New世代の現在の容量(KB)。S0C
: Survivor領域0の現在の容量(KB)。S1C
: Survivor領域1の現在の容量(KB)。EC
: Eden領域の現在の容量(KB)。OGCMN
: Old世代の最小容量(KB)。OGCMX
: Old世代の最大容量(KB)。OGC
: Old世代の現在の容量(KB)。OC
: Old領域の現在の容量(KB)。MCMN
: メタスペースの最小容量(KB)。MCMX
: メタスペースの最大容量(KB)。MC
: Metaspaceコミット済サイズ(KB)。CCSMN
: 圧縮クラス領域の最小容量 (KB)。CCSMX
: 圧縮クラス領域の最大容量 (KB)。CCSC
: 圧縮クラス・コミット・サイズ(KB)。YGC
: Young世代のGCイベントの数。FGC
: フルGCイベントの数。 -gccause
option-
このオプションは、
-gcutil
オプションと同じガベージ・コレクション統計情報のサマリーを表示しますが、最後のガベージ・コレクション・イベントと(適用可能な場合は),現在のガベージ・コレクション・イベントの原因が含まれます。 このオプションでは、-gcutil
にリストされている列に加えて、次の列が追加されます:LGCC
: 最後のガベージ・コレクションの原因GCC
: 現在のガベージ・コレクションの原因 -gcnew
option-
New世代の統計情報。
S0C
: Survivor領域0の現在の容量(KB)。S1C
: Survivor領域1の現在の容量(KB)。S0U
: Survivor領域0の使用率(KB)。S1U
: Survivor領域1の使用率(KB)。TT
: 殿堂入りしきい値。TT
: 最大殿堂入りしきい値。DSS
: 適切なSurvivorサイズ(KB)。EC
: Eden領域の現在の容量(KB)。EU
: Eden領域の使用率(KB)。YGC
: Young世代のGCイベントの数。YGCT
: Young世代のガベージ・コレクション時間。 -gcnewcapacity
option-
New世代領域サイズの統計情報。
NGCMN
: New世代の最小容量(KB)。NGCMX
: New世代の最大容量(KB)。NGC
: New世代の現在の容量(KB)。S0CMX
: Survivor領域0の最大容量(KB)。S0C
: Survivor領域0の現在の容量(KB)。S1CMX
: Survivor領域1の最大容量(KB)。S1C
: Survivor領域1の現在の容量(KB)。ECMX
: Eden領域の最大容量(KB)。EC
: Eden領域の現在の容量(KB)。YGC
: Young世代のGCイベントの数。FGC
: フルGCイベントの数。 -gcold
option-
Old世代サイズの統計情報。
MC
: Metaspaceコミット済サイズ(KB)。MU
: メタスペースの使用率(KB)。CCSC
: 圧縮クラス・コミット・サイズ(KB)。CCSU
: 圧縮されたクラス・スペースで(KB)が使用されました。OC
: Old領域の現在の容量(KB)。OU
: Old領域の使用率(KB)。YGC
: Young世代のGCイベントの数。FGC
: フルGCイベントの数。FGCT
: フル・ガベージ・コレクションの時間。GCT
: ガベージ・コレクションの総時間。 -gcoldcapacity
option-
Old世代の統計情報。
OGCMN
: Old世代の最小容量(KB)。OGCMX
: Old世代の最大容量(KB)。OGC
: Old世代の現在の容量(KB)。OC
: Old領域の現在の容量(KB)。YGC
: Young世代のGCイベントの数。FGC
: フルGCイベントの数。FGCT
: フル・ガベージ・コレクションの時間。GCT
: ガベージ・コレクションの総時間。 -gcmetacapacity
option-
メタスペース・サイズの統計情報。
MCMN
: メタスペースの最小容量(KB)。MCMX
: メタスペースの最大容量(KB)。MC
: Metaspaceコミット済サイズ(KB)。CCSMN
: 圧縮クラス領域の最小容量 (KB)。CCSMX
: 圧縮クラス領域の最大容量 (KB)。YGC
: Young世代のGCイベントの数。FGC
: フルGCイベントの数。FGCT
: フル・ガベージ・コレクションの時間。GCT
: ガベージ・コレクションの総時間。 -gcutil
option-
ガベージ・コレクション統計データのサマリー
S0
: Survivor領域0の使用率(現在の容量に対するパーセンテージ)。S1
: Survivor領域1の使用率(現在の容量に対するパーセンテージ)。E
: Eden領域の使用率(現在の容量に対するパーセンテージ)。O
: Old領域の使用率(現在の容量に対するパーセンテージ)。M
: メタスペースの使用率(現在の容量に対するパーセンテージ)。CCS
: 圧縮されたクラス領域使用率をパーセンテージで指定します。YGC
: Young世代のGCイベントの数。YGCT
: Young世代のガベージ・コレクション時間。FGC
: フルGCイベントの数。FGCT
: フル・ガベージ・コレクションの時間。GCT
: ガベージ・コレクションの総時間。 -printcompilation
option-
Java HotSpot VMコンパイル・メソッドの統計情報。
Compiled
: 最近コンパイルされたメソッドによって実行されたコンパイル・タスクの数。Size
: 最近コンパイルされたメソッドのバイト・コードのバイト数。Type
: 最近コンパイルされたメソッドのコンパイル型。Method
: 最近コンパイルされたメソッドを特定するクラス名とメソッド名。 クラス名は、ネームスペース・セパレータとして(.)の代わりにスラッシュ(/)を使用します。 メソッド名は、指定されたクラス内のメソッドです。 これらの2つのフィールドの形式は、HotSpotの-XX:+PrintCompilation
オプションと対応しています。
仮想マシン識別子
vmid
文字列の構文は、URIの構文に対応しています。
[protocol
:
][//
]lvmid[@
hostname[:
port][/
servername]
vmid
文字列の構文は、URIの構文に対応しています。 vmid
文字列は、ローカルJVMを表す単純な整数から、通信プロトコル、ポート番号、およびその他の実装固有の値を指定する複雑な構造まで様々に異なります。
- protocol
-
通信プロトコルです。 protocol値が省略され、ホスト名が指定されていない場合、デフォルト・プロトコルはプラットフォーム固有の最適化ローカル・プロトコルです。 protocol値が省略され、ホスト名が指定されている場合は、デフォルト・プロトコルは
rmi
になります。 - lvmid
-
ターゲットJVMのローカル仮想マシン識別子です。 lvmidは、システム上のJVMを一意に識別するプラットフォーム固有の値です。 lvmidは、仮想マシン識別子の唯一の必須要素です。 lvmidは、一般的にはターゲットJVMプロセスに対するオペレーティング・システムのプロセス識別子ですが、必ずしもそうであるとは限りません。
jps
コマンドを使用して、JVMプロセスが別のdockerインスタンスで実行されていない場合、lvmidを特定できます。 LinuxおよびmacOSプラットフォームではps
コマンドを使用し、WindowsではWindowsタスク・マネージャを使用してlvmidを決定することもできます。 - hostname
- ターゲット・ホストを示すホスト名またはIPアドレス。 hostname値が省略されている場合は、ターゲット・ホストはローカル・ホストになります。
- ポート
-
リモート・サーバーと通信するためのデフォルト・ポートです。 hostname値が省略されているか、protocol値で最適化されたローカル・プロトコルが指定されている場合、port値は無視されます。 それ以外の場合、portパラメータの扱いは、実装によって異なります。 デフォルトの
rmi
プロトコルの場合、ポート値はリモート・ホスト上のrmiregistry
のポート番号を示します。 port値が省略され、protocol値でrmi
が指定されている場合、デフォルトのrmiregistryポート(1099)が使用されます。 - servername
-
servernameパラメータの扱いは、実装によって異なります。 最適化されたローカル・プロトコルの場合、このフィールドは無視されます。
rmi
プロトコルの場合は、このパラメータは、リモート・ホスト上のRMIリソース・オブジェクトの名前を示します。
例
このセクションでは、21891のlvmidを持つローカルJVMをモニターする例を示します。
gcutilオプション
この例では、lvmid 21891に接続し、250ミリ秒間隔で7つのサンプルを取り、-gcutil
オプションで指定された出力を表示します。
この例の出力は、Young世代のコレクションが3番目と4番目のサンプル間で行われたことを示しています。 コレクションには0.078秒かかっており、オブジェクトがEden領域(E)からOld領域(O)に昇格したため、Old領域の使用率は66.80%から68.19%に増加しています。 Survivor領域は、コレクション前は97.02%が使用されていましたが、コレクション後は91.03%が使用されています。
jstat -gcutil 21891 250 7
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 97.02 70.31 66.80 95.52 89.14 7 0.300 0 0.000 0.300
0.00 97.02 86.23 66.80 95.52 89.14 7 0.300 0 0.000 0.300
0.00 97.02 96.53 66.80 95.52 89.14 7 0.300 0 0.000 0.300
91.03 0.00 1.98 68.19 95.89 91.24 8 0.378 0 0.000 0.378
91.03 0.00 15.82 68.19 95.89 91.24 8 0.378 0 0.000 0.378
91.03 0.00 17.80 68.19 95.89 91.24 8 0.378 0 0.000 0.378
91.03 0.00 17.80 68.19 95.89 91.24 8 0.378 0 0.000 0.378
列ヘッダー文字列の繰返し
この例では、lvmid 21891に接続し、250ミリ秒間隔でサンプルを取得し、-gcnew
オプションで指定された出力を表示します。 さらに、-h3
オプションを使用して、データが3行表示されるごとに列ヘッダーを出力します。
この例では、ヘッダー文字列の繰返しが見られる他にも、2番目と3番目のサンプル間でYoung GCが行われたことがわかります。 この継続時間は0.001秒でした。 コレクションは、サバイバ・スペース0の利用率(S0U)が希望のサバイバ・サイズ(DSS)を超過していたであろう十分なアクティブなデータを発見しました。 この結果、オブジェクトは、Old世代(この出力には非表示)へ昇格され、殿堂入りしきい値(TT)が、31から2へ降格されました。
別のコレクションが、5番目と6番目のサンプル間で行われています。 このコレクションでは、Survivorがほとんど見られず、殿堂入りしきい値を31に戻しました。
jstat -gcnew -h3 21891 250
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
64.0 64.0 0.0 31.7 31 31 32.0 512.0 178.6 249 0.203
64.0 64.0 0.0 31.7 31 31 32.0 512.0 355.5 249 0.203
64.0 64.0 35.4 0.0 2 31 32.0 512.0 21.9 250 0.204
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
64.0 64.0 35.4 0.0 2 31 32.0 512.0 245.9 250 0.204
64.0 64.0 35.4 0.0 2 31 32.0 512.0 421.1 250 0.204
64.0 64.0 0.0 19.0 31 31 32.0 512.0 84.4 251 0.204
S0C S1C S0U S1U TT MTT DSS EC EU YGC YGCT
64.0 64.0 0.0 19.0 31 31 32.0 512.0 306.7 251 0.204
サンプルごとのタイムスタンプの挿入
この例は、lvmid21891へ接続し、250ミリ秒間隔で3つのサンプルを取得しています。 -t
オプションを使用して、最初の列にサンプルごとのタイムスタンプを表示しています。
Timestamp列には、ターゲットJVMの起動時からの経過時間が、秒単位で報告されています。 さらに、-gcoldcapacity
出力では、割当て要求または昇格要求あるいはその両方を満たすためにヒープが拡張するごとに、Old世代の容量(OGC)とOld領域の容量(OC)とが増加していることがわかります。 旧世代の容量(OGC)は、81番目の完全ガベージ・コレクション(FGC)の後、11,696 KBから13,820 KBに成長しました。 この世代(および領域)の最大容量は、60,544 Kバイト(OGCMX)なので、まだ拡張できる余裕が残されています。
Timestamp OGCMN OGCMX OGC OC YGC FGC FGCT GCT
150.1 1408.0 60544.0 11696.0 11696.0 194 80 2.874 3.799
150.4 1408.0 60544.0 13820.0 13820.0 194 81 2.938 3.863
150.7 1408.0 60544.0 13820.0 13820.0 194 81 2.938 3.863
リモートJVMのインストゥルメンテーションのモニター
この例では、-gcutil
オプションを使用してremote.domain
という名前のシステム上のlvmid 40496に接続し、毎秒無期限に標本を取得します。
lvmidは、リモート・ホストの名前と結合されて、40496@remote.domain
のvmidを構成しています。 結果として、このvmidはrmi
プロトコルを使用して、リモート・ホスト上のデフォルトのjstatd
サーバーと通信します。 jstatd
サーバーは、rmiregistry
コマンド(ポート1099)のデフォルト・ポートにバインドされているremote.domain
のrmiregistry
コマンドを使用して配置されます。
jstat -gcutil 40496@remote.domain 1000
... output omitted