jstat [ generalOption | outputOptions vmid [ interval[s|ms] [ count ] ]
generalOption
outputOptions
vmid
[protocol:][//]lvmid[@hostname[:port]/servername]
interval [s|ms]
count
jstatコマンドは、設置されているJava HotSpot VMのパフォーマンス統計データを表示します。ターゲットJVMは、仮想マシン識別子またはvmidオプションによって識別されます。
vmid文字列の構文は、URIの構文に対応しています。
[protocol:][//]lvmid[@hostname[:port]/servername]
protocol
lvmid
hostname
port
servername
jstatコマンドは、一般的なオプションと出力オプションの2つのタイプのオプションをサポートしています。一般的なオプションを使用した場合、jstatコマンドは簡単な使用率およびバージョン情報を表示します。出力オプションによって、統計データ出力の内容と形式が決まります。
すべてのオプションとその機能は、将来のリリースで変更または廃止される可能性があります。
いずれかの一般的なオプションを指定した場合、他のオプションまたはパラメータは一切指定できません。
-help
-options
一般的なオプションを指定しない場合に、出力オプションを指定できます。出力オプションは、jstatコマンドの出力の内容と形式を決定し、単一のstatOptionといずれかの出力オプション(-h、-tおよび-J)で構成されます。statOptionは最初に記述する必要があります。
出力は、各列が空白で区切られた表の形式になります。タイトルを含むヘッダー行によって、各列の意味がわかります。ヘッダーの表示頻度を設定するには、-hオプションを使用します。列のヘッダー名は、様々なオプション間で一貫性が保たれています。一般に、2つのオプションで同じ名前の列が使用されていれば、2つの列のデータ・ソースは同じです。
-tオプションを使用すると、Timestampというラベルの付いたタイムスタンプの列が、出力の最初の列として表示されます。Timestamp列には、ターゲットJVMの起動からの経過時間が、秒単位で表示されます。タイムスタンプの精度は、様々な要因によって異なり、大量の負荷のかかったシステムでのスレッド・スケジュールの遅延により変動します。
intervalおよびcountパラメータを使用して、jstatコマンドがその出力を表示する頻度と回数をそれぞれ指定します。
注意: 将来のリリースでこの形式は変更される可能性があるため、jstatコマンドの出力を解析するスクリプトは作成しなでください。jstatコマンドの出力を解析するスクリプトを作成する場合は、このツールの将来のリリースで、そのスクリプトを変更する必要があることに留意してください。
-statOption
class: クラス・ローダーの動作に関する統計データを表示します。
compiler: Java HotSpot VM Just-in-Timeコンパイラの動作に関する統計データを表示します。
gc: ガベージ・コレクトされたヒープの動作に関する統計データを表示します。
gccapacity: 世代ごとの容量と対応する領域に関する統計データを表示します。
gccause: ガベージ・コレクション統計データのサマリー(-gcutilと同じ)と、直前および現在(適用可能な場合)のガベージ・コレクション・イベントの原因を表示します。
gcnew: New世代の動作に関する統計データを表示します。
gcnewcapacity: New世代のサイズと対応する領域に関する統計データを表示します。
gcold: Old世代の動作とメタスペースに関する統計データを表示します。
gcoldcapacity: Old世代のサイズに関する統計データを表示します。
gcmetacapacity: メタスペースのサイズに関する統計データを表示します。
gcutil: ガベージ・コレクションのサマリーに関する統計データを表示します。
printcompilation: Java HotSpot VMコンパイル・メソッドの統計データを表示します。
-h n
-t
-JjavaOption
次の情報は、jstatコマンドが各statOptionについて出力する列をまとめたものです。
-class option
Loaded: ロードされたクラスの数。
Bytes: ロードされたKBの数。
Unloaded: アンロードされたクラスの数。
Bytes: アンロードされたKBの数。
Time: クラスのロードやアンロード処理に要した時間。
-compiler option
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: メタスペースの容量(KB)。
MU: メタスペースの使用率(KB)。
CCSC: 圧縮されたクラス領域の容量(KB)。
CCSU: 使用されている圧縮されたクラス領域(KB)。
YGC: 若い世代のガベージ・コレクション・イベントの数。
YGCT: 若い世代のガベージ・コレクション時間。
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: メタスペースの容量(KB)。
CCSMN: 圧縮されたクラス領域の最小容量(KB)。
CCSMX: 圧縮されたクラス領域の最大容量(KB)。
CCSC: 圧縮されたクラス領域の容量(KB)。
YGC: 若い世代のGCイベント数。
FGC: フルGCイベント数。
-gccause option
LGCC: 最後のガベージ・コレクションの原因
GCC: 現在のガベージ・コレクションの原因
-gcnew option
S0C: Survivor領域0の現在の容量(KB)。
S1C: Survivor領域1の現在の容量(KB)。
S0U: Survivor領域0の使用率(KB)。
S1U: Survivor領域1の使用率(KB)。
TT: 殿堂入りしきい値。
MTT: 最大殿堂入りしきい値。
DSS: 適切なSurvivorサイズ(KB)。
EC: Eden領域の現在の容量(KB)。
EU: Eden領域の使用率(KB)。
YGC: 若い世代のGCイベント数。
YGCT: 若い世代のガベージ・コレクション時間。
-gcnewcapacity option
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: 若い世代のGCイベント数。
FGC: フルGCイベント数。
-gcold option
MC: メタスペースの容量(KB)。
MU: メタスペースの使用率(KB)。
CCSC: 圧縮されたクラス領域の容量(KB)。
CCSU: 使用されている圧縮されたクラス領域(KB)。
OC: Old領域の現在の容量(KB)。
OU: Old領域の使用率(KB)。
YGC: 若い世代のGCイベント数。
FGC: フルGCイベント数。
FGCT: フルガベージ・コレクション時間。
GCT: ガベージ・コレクション総時間。
-gcoldcapacity option
OGCMN: Old世代の最小容量(KB)。
OGCMX: Old世代の最大容量(KB)。
OGC: Old世代の現在の容量(KB)。
OC: Old領域の現在の容量(KB)。
YGC: 若い世代のGCイベント数。
FGC: フルGCイベント数。
FGCT: フルガベージ・コレクション時間。
GCT: ガベージ・コレクション総時間。
-gcmetacapacity option
MCMN: メタスペースの最小容量(KB)。
MCMX: メタスペースの最大容量(KB)。
MC: メタスペースの容量(KB)。
CCSMN: 圧縮されたクラス領域の最小容量(KB)。
CCSMX: 圧縮されたクラス領域の最大容量(KB)。
YGC: 若い世代のGCイベント数。
FGC: フルGCイベント数。
FGCT: フルガベージ・コレクション時間。
GCT: ガベージ・コレクション総時間。
-gcutil option
S0: Survivor領域0の使用率(現在の容量に対するパーセンテージ)。
S1: Survivor領域1の使用率(現在の容量に対するパーセンテージ)。
E: Eden領域の使用率(現在の容量に対するパーセンテージ)。
O: Old領域の使用率(現在の容量に対するパーセンテージ)。
M: メタスペースの使用率(領域の現在の容量に対するパーセンテージ)。
CCS: 圧縮されたクラス領域の使用率(パーセンテージ)。
YGC: 若い世代のGCイベント数。
YGCT: 若い世代のガベージ・コレクション時間。
FGC: フルGCイベント数。
FGCT: フルガベージ・コレクション時間。
GCT: ガベージ・コレクション総時間。
-printcompilation option
Compiled: 最近コンパイルされたメソッドで実行されたコンパイル・タスクの数。
Size: 最近コンパイルされたメソッドのバイト・コードのバイト数。
Type: 最近コンパイルされたメソッドのコンパイル・タイプ。
Method: 最近コンパイルされたメソッドを特定するクラス名とメソッド名。クラス名では、名前空間の区切り文字として、ドット(.)のかわりにスラッシュ(/)が使用されます。メソッド名は、指定されたクラス内のメソッドです。これらの2つのフィールドの形式は、HotSpot -XX:+PrintCompilationオプションと対応しています。
この項では、21891のlvmidを持つローカルJVMをモニタリングする例を示します。
この例では、lvmid 21891に接続して、250ミリ秒間隔で7つのサンプルを取得し、-gcutilオプションでの指定に従って出力を表示します。
この例の出力は、若い世代のコレクションが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秒でした。このコレクションでは、Survivor領域0の使用率(S0U)が適切なSurvivorサイズ(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)とが増加していることがわかります。81番目のフル・ガベージ・コレクション(FGC)の後、Old世代の容量(OGC)は11,696KBから13,820KBに増加しました。この世代(および領域)の最大容量は、60,544KB (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
この例は、-gcutilオプションを使用して、remote.domainというシステム上のlvmid 40496に接続し、サンプルを秒単位で無期限に取得しています。
lvmidは、リモート・ホストの名前と結合されて、40496@remote.domainのvmidを構成しています。結果として、このvmidは、rmiプロトコルを使用して、リモート・ホスト上のデフォルトのjstatdサーバーと通信します。jstatdサーバーは、rmiregistryコマンドを使用して、rmiregistryコマンドのデフォルトのポート(ポート1099)にバインドされたremote.domainに配置されます。
jstat -gcutil 40496@remote.domain 1000 ... output omitted