jstat - Java 仮想マシン統計データ監視ツール

形式

jstat [ generalOption | outputOptions vmid [interval[s|ms] [count]] ]

パラメータ

generalOption
単独で使用する一般的なコマンド行オプションです (-help または -options)。
outputOptions
単一の statOption と、-t、-h、および -J オプションのいずれかを組み合わせた、1 つまたは複数の出力オプションです。
vmid
ターゲットの Java 仮想マシン (JVM) を示す文字列である仮想マシン識別子です。一般的な構文は次のようになります。
[protocol:][//]lvmid[@hostname[:port]/servername]
vmid 文字列の構文の大部分は、URI の構文に対応しています。vmid は、ローカル JVM を表す単純な整数から、通信プロトコル、ポート番号、およびその他の実装固有の値を示す複雑な構造まで、さまざまに異なります。詳細は、「仮想マシン識別子」を参照してください。
interval[s|ms]
秒 (s) またはミリ秒 (ms) のうち指定した単位でのサンプリング間隔です。デフォルトの単位はミリ秒です。正の整数である必要があります。これが指定された場合、jstat は interval ごとに出力を生成します。
count
表示するサンプル数です。デフォルト値は無限です。つまり、jstat は、ターゲット JVM が終了するまで、または jstat コマンドが終了するまで、統計データを表示します。正の整数である必要があります。

説明

jstat ツールは、設置されている HotSpot Java 仮想マシン (JVM) のパフォーマンス統計データを表示します。ターゲット JVM は、仮想マシン識別子、つまり下記の vmid オプションによって識別されます。

:このユーティリティーはサポート対象外であり、将来の JDK のバージョンでは利用できなくなる可能性があります。現在、Windows 98 および Windows Me プラットフォームでは使用できません。

仮想マシン識別子

vmid 文字列の構文の大部分は、URI の構文に対応しています。

[protocol:][//]lvmid[@hostname][:port][/servername]
protocol
通信プロトコルです。protocol が省略され、hostname が指定されていない場合、デフォルトのプロトコルが、プラットフォーム固有の最適化されたローカルプロトコルになります。protocol が省略され、hostname が指定されている場合は、デフォルトプロトコルは rmi になります。
lvmid
ターゲット JVM のローカル仮想マシン識別子です。lvmid は、システム上の JVM を一意に識別するプラットフォーム固有の値です。lvmid は、仮想マシン識別子の唯一の必須要素です。lvmid は、一般的にはターゲット JVM プロセスに対するオペレーティングシステムのプロセス識別子ですが、必ずしもそうであるとは限りません。jps コマンドを使用して、lvmid を指定できます。また、Unix プラットフォームでは ps コマンドを使用して、Windows では Windows タスクマネージャーを使用して、lvmid を指定できます。
hostname
ターゲットホストを示すホスト名または IP アドレスです。hostname が省略されている場合は、ターゲットホストはローカルホストになります。
port
リモートサーバーと通信するためのデフォルトポートです。hostname が省略されているか、protocol で最適化されたローカルプロトコルが指定されている場合、port は無視されます。そうでなければ、port パラメータの扱いは、実装によって異なります。デフォルトの rmi プロトコルの場合、port は、リモートホスト上の rmiregistry のポート番号を示します。port が省略され、protocolrmi が指定されている場合、デフォルトの rmiregistry ポート (1099) が使用されます。
servername
このパラメータの扱いは、実装によって異なります。最適化されたローカルプロトコルの場合、このフィールドは無視されます。rmi プロトコルの場合は、このパラメータは、リモートホスト上の RMI リソースオブジェクトの名前を示します。

オプション

jstat コマンドは、一般的なオプション出力オプションの 2 つのタイプのオプションをサポートしています。一般的なオプションを使用した場合、jstat は簡単な使用率およびバージョン情報を表示します。出力オプションでは、統計データ出力の内容と形式を指定します。

:すべてのオプションとその機能は、将来のリリースで変更または廃止される可能性があります。

一般的なオプション

いずれかの一般的なオプションを指定した場合、 ほかのオプションまたはパラメータは一切指定できません。

-help
ヘルプメッセージを表示します。
-options
統計データオプションを一覧表示します。下記の「出力オプション」のセクションを参照してください。

出力オプション

一般的なオプションを指定しない場合に、出力オプションを指定できます。出力オプションは、jstat の出力の内容および形式を指定し、単一の statOption と、その他のいずれかの出力オプション (-h、-t、および -J) とで構成されます。statOption は最初に記述する必要があります。

出力は、各列が空白で区切られたテーブルの形式で構成されます。タイトル付きのヘッダー行は、各列の説明です。-h オプションを使用すると、ヘッダー行が表示される頻度を設定できます。各列ヘッダー名は通常、どのオプションでも同じです。一般に、2 つのオプションで同じ名前の列が使用されていれば、2 つの列のデータソースは同じになります。

-t オプションを使用すると、Timestamp というラベルの付いたタイムスタンプの列が、出力の最初の列として表示されます。Timestamp 列には、ターゲット JVM の起動からの経過時間が、秒単位で表示されます。タイムスタンプの精度は、さまざまな要因によって異なり、大量の負荷のかかったシステムでのスレッドスケジュールの遅延により変動します。

interval および count パラメータを使用して、jstat がその出力を表示する頻度と回数をそれぞれ指定します。

:将来のリリースでこの形式は変更される可能性があるため、jstat の出力を解析するスクリプトは作成しないことをお勧めします。jstat 出力を解析するスクリプトを作成する場合は、このツールの将来のリリースで、そのスクリプトを変更しなければならないことに留意してください。

-statOption
jstat が表示する統計データ情報を指定します。次の表に、使用可能なオプションを示します。特定のプラットフォームのインストールについて、オプションを一覧表示するには、一般的なオプションの -options を使用します。

オプション 表示内容
クラス クラスローダーの動作に関する統計データ
compiler HotSpot Just-in-Time コンパイラの動作に関する統計データ
gc ガベージコレクトされたヒープの動作に関する統計データ
gccapacity 世代ごとの容量と対応する領域に関する統計データ
gccause ガベージコレクション統計データの概要 (-gcutil と同じ) と、直前および現在 (適用可能な場合) のガベージコレクションイベントの原因
gcnew New 世代の動作に関する統計データ
gcnewcapacity New 世代のサイズと対応する領域に関する統計データ
gcold Old 世代および Permanent 世代の動作に関する統計データ
gcoldcapacity Old 世代のサイズに関する統計データ
gcpermcapacity Permanent 世代のサイズに関する統計データ
gcutil ガベージコレクション統計データの概要
printcompilation HotSpot コンパイル方法の統計データ
-h n
n サンプル (出力行) ごとに列ヘッダーを表示。ただし、n は正の整数値。デフォルト値は 0。このとき、データの最初の行の上に列ヘッダーが表示されます。
-t
タイムスタンプ列を出力の最初の列として表示。タイムスタンプは、ターゲット JVM の起動時からの経過時間。
-JjavaOption
javaOptionjava アプリケーション起動ツールに渡します。たとえば、-J-Xms48m と指定すると、スタートアップメモリーは 48M バイトに設定されます。オプションの完全なリストについては、java - Java アプリケーション起動ツールのドキュメントを参照してください。

statOption と出力

以降の表では、jstatstatOption ごとに出力する列について概要を示します。

-class オプション

クラスローダーの統計データ
説明
Loaded ロードされたクラスの数
Bytes ロードされた K バイト数
Unloaded アンロードされたクラスの数
Bytes アンロードされた K バイト数
Time クラスのロードやアンロード処理に要した時間

-compiler オプション

HotSpot Just-In-Time コンパイラの統計データ
説明
Compiled 実行されたコンパイルタスクの数
Failed 失敗したコンパイルタスクの数
Invalid 無効にされたコンパイルタスクの数
Time コンパイルタスクの実行に要した時間
FailedType 最後に失敗したコンパイルのコンパイルタイプ
FailedMethod 最後に失敗したコンパイルのクラス名とメソッド

-gc オプション

ガベージコレクトされたヒープの統計データ
説明
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)
PC Permanent 領域の現在の容量 (KB)
PU Permanent 領域の使用率 (KB)
YGC 若い世代の GC イベント数
YGCT 若い世代のガベージコレクション時間
FGC フル GC イベント数
FGCT フルガベージコレクション時間
GCT ガベージコレクション総時間

-gccapacity オプション

メモリープール世代および領域容量
説明
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)
PGCMN Permanent 世代の最小容量 (KB)
PGCMX Permanent 世代の最大容量 (KB)
PGC Permanent 世代の現在の容量 (KB)
PC Permanent 領域の現在の容量 (KB)
YGC 若い世代の GC イベント数
FGC フル GC イベント数

-gccause オプション

このオプションは、-gcutil オプションと同じガベージコレクション統計データの概要を表示しますが、最後のガベージコレクションイベントと (適用可能な場合は) 現在のガベージコレクションイベントの原因が含まれます。-gcutil で一覧表示される列のほかに、このオプションでは次の列が追加されます。

GC イベントを含むガベージコレクション統計データ
説明
LGCC 最後のガベージコレクションの原因
GCC 現在のガベージコレクションの原因

-gcnew オプション

New 世代の統計データ
説明
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 オプション

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 若い世代の GC イベント数
FGC フル GC イベント数

-gcold オプション

Old および Permanent 世代の統計データ
説明
PC Permanent 領域の現在の容量 (KB)
PU Permanent 領域の使用率 (KB)
OC Old 領域の現在の容量 (KB)
OU Old 領域の使用率 (KB)
YGC 若い世代の GC イベント数
FGC フル GC イベント数
FGCT フルガベージコレクション時間
GCT ガベージコレクション総時間

-gcoldcapacity オプション

Old 世代の統計データ
説明
OGCMN Old 世代の最小容量 (KB)
OGCMX Old 世代の最大容量 (KB)
OGC Old 世代の現在の容量 (KB)
OC Old 領域の現在の容量 (KB)
YGC 若い世代の GC イベント数
FGC フル GC イベント数
FGCT フルガベージコレクション時間
GCT ガベージコレクション総時間

-gcpermcapacity オプション

Permanent 世代の統計データ
説明
PGCMN Permanent 世代の最小容量 (KB)
PGCMX Permanent 世代の最大容量 (KB)
PGC Permanent 世代の現在の容量 (KB)
PC Permanent 領域の現在の容量 (KB)
YGC 若い世代の GC イベント数
FGC フル GC イベント数
FGCT フルガベージコレクション時間
GCT ガベージコレクション総時間

-gcutil オプション

ガベージコレクション統計データの概要
説明
S0 Survivor 領域 0 の使用率 (現在の容量に対するパーセンテージ)
S1 Survivor 領域 1 の使用率 (現在の容量に対するパーセンテージ)
E Eden 領域の使用率 (現在の容量に対するパーセンテージ)
O Old 領域の使用率 (現在の容量に対するパーセンテージ)
P Permanent 領域の使用率 (現在の容量に対するパーセンテージ)
YGC 若い世代の GC イベント数
YGCT 若い世代のガベージコレクション時間
FGC フル GC イベント数
FGCT フルガベージコレクション時間
GCT ガベージコレクション総時間

-printcompilation オプション

HotSpot コンパイル方法の統計データ
説明
Compiled もっとも新しくコンパイルされたメソッドによって実行されたコンパイルタスクの数。
サイズ もっとも新しくコンパイルされたメソッドのバイトコードのバイト数。
もっとも新しくコンパイルされたメソッドのコンパイル型。
メソッド もっとも新しくコンパイルされたメソッドを特定するクラス名とメソッド名。クラス名では、名前空間の区切り文字として、「.」ではなく「/」が使用される。メソッド名は、指定されたクラス内のメソッドである。これらの 2 つのフィールドの形式は、HotSpot - XX:+PrintComplation オプションと対応している。

このセクションでは、21891 の lvmid を持つローカル JVM を監視する例を示します。

-gcutil オプションの使用

この例は、lvmid 21891 に接続して、250 ミリ秒間隔で 7 つのサンプルを取得し、-gcutil オプションでの指定に従って出力を表示します。

jstat -gcutil 21891 250 7
S0 S1 E O P YGC YGCT FGC FGCT GCT
12.44 0.00 27.20 9.49 96.70 78 0.176 5 0.495 0.672
12.44 0.00 62.16 9.49 96.70 78 0.176 5 0.495 0.672
12.44 0.00 83.97 9.49 96.70 78 0.176 5 0.495 0.672
0.00 7.74 0.00 9.51 96.70 79 0.177 5 0.495 0.673
0.00 7.74 23.37 9.51 96.70 79 0.177 5 0.495 0.673
0.00 7.74 43.82 9.51 96.70 79 0.177 5 0.495 0.673
0.00 7.74 58.11 9.51 96.71 79 0.177 5 0.495 0.673

この例の出力は、若い世代のコレクションが 3 番目と 4 番目のサンプル間で行われたことを示しています。コレクションには 0.001 秒かかっており、オブジェクトが Eden 領域 (E) から Old 領域 (O) に昇格したため、Old 領域の使用率は 9.49% から 9.51% に増加しています。Survivor 領域は、コレクション前は 12.44% が使用されていましたが、コレクション後は 7.74% しか使用されていません。

列ヘッダー文字列の繰り返し

この例は、lvmid 21891 に接続して、250 ミリ秒間隔でサンプルを取得し、-gcutil オプションでの指定に従って出力を表示します。さらに、-h3 オプションを使用して、データが 3 行表示されるごとに列ヘッダーを出力します。

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

この例では、ヘッダー文字列の繰り返しが見られるほかにも、2 番目と 3 番目のサンプル間で Young GC が行われたことがわかります。この継続時間は 0.001 秒でした。このコレクションでは、Survivor 領域 0 の使用率 (S0U) が適切な Survivor サイズ (DSS) を超過することになるライブデータが検出されました。この結果、オブジェクトは、Old 世代 (この出力には非表示) へ昇格され、殿堂入りしきい値 (TT) が、31 から 2 へ降格されました。

別のコレクションが、5 番目と 6 番目のサンプル間で行われています。このコレクションでは、Survivor がほとんど見られず、殿堂入りしきい値を 31 に戻しました。

サンプルごとのタイムスタンプの挿入

この例は、lvmid 21891 へ接続し、250 ミリ秒間隔で 3 つのサンプルを取得しています。-t オプションを使用して、最初の列にサンプルごとのタイムスタンプを表示しています。

jstat -gcoldcapacity -t 21891 250 3
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

Timestamp 列には、ターゲット JVM の起動時からの経過時間が、秒単位でレポートされています。さらに、-gcoldcapacity 出力では、割り当て要求または昇格要求あるいはその両方を満たすためにヒープが拡張するごとに、Old 世代の容量 (OGC) と Old 領域の容量 (OC) とが増加していることがわかります。Old 世代の容量 (OGC) は、81 番目のフル GC (FGC) 後に、11696 KB から 13820 KB へ増加しています。Old 世代 (および領域) の最大容量は、60544 KB (OGCMX) なので、まだ拡張できる余裕が残されています。

リモート JVM のインストゥルメンテーションの監視

この例は、-gcutil オプションを使用して、remote.domain というシステム上の lvmid 40496 に接続し、サンプルを秒単位で無期限に取得しています。

jstat -gcutil 40496@remote.domain 1000
... output omitted

lvmid は、リモートホストの名前と結合されて、40496@remote.domainvmid を構成しています。結果として、この vmid は、rmi プロトコルを使用して、リモートホスト上のデフォルトの jstatd サーバーと通信します。jstatd サーバーは、rmiregistry を使用して、デフォルトの rmiregistry ポート (ポート 1099) にバインドされた remote.domain に配置されます。

関連項目


Copyright © 1993, 2013, Oracle and/or its affiliates. All rights reserved.