連載 :
Java EEのサイジングチューニングに使えるJava性能監視ツール
2011年3月25日(金)
JavaVMの状況を簡易出力するjstat
Javaには、グラフィカルなフラフを出力する環境やリソースがない場合を想定したツールも用意されています。jstat(Java 1.4以前はjvmstat)と呼ばれるツールです。使い方は簡単です。
jstat -出力オプション(-h[ヘッダーを出力する行間隔]) [プロセス番号] [出力間隔(ミリ秒)]
- [注] 出力オプションについては[Java 仮想マシン統計データ監視ツール]を参考にしてください。
例えば、
C:\>jstat -gcutil -h5 6684 1000
を入力すると、次のように出力されます。
- 出力オプション: gcutilで指定されたフォーマットで、ヘッダーを5行間隔、1秒間隔で出力します。
S0 S1 E O P YGC YGCT FGC FGCT GCT 87.58 0.00 74.95 69.37 99.47 302 0.379 5 0.453 0.832 87.58 0.00 74.95 69.37 99.47 302 0.379 5 0.453 0.832 87.58 0.00 74.95 69.37 99.47 302 0.379 5 0.453 0.832 87.58 0.00 74.95 69.37 99.47 302 0.379 5 0.453 0.832 87.58 0.00 74.95 69.37 99.47 302 0.379 5 0.453 0.832 S0 S1 E O P YGC YGCT FGC FGCT GCT 87.58 0.00 74.95 69.37 99.47 302 0.379 5 0.453 0.832 87.58 0.00 74.95 69.37 99.47 302 0.379 5 0.453 0.832 0.00 73.86 24.80 69.77 99.47 303 0.380 5 0.453 0.832 0.00 73.86 24.80 69.77 99.47 303 0.380 5 0.453 0.832 0.00 73.86 24.80 69.77 99.47 303 0.380 5 0.453 0.832
それぞれの項目の意味は、以下の通りです。
表2: jstat -gcutilの出力項目一覧
列 | 説明 |
---|---|
S0 | Survivor領域0(From)の使用率(現在の容量に対するパーセンテージ) |
S1 | Survivor領域1(To)の使用率(現在の容量に対するパーセンテージ) |
E | Eden領域の使用率(現在の容量に対するパーセンテージ) |
O | Old領域の使用率(現在の容量に対するパーセンテージ) |
P | Permanent領域の使用率(現在の容量に対するパーセンテージ) |
YGC | New領域のカベージ・コレクションの回数 |
YGCT | New領域のガベージ・コレクション時間(ミリ秒) |
FGC | 完全カベージ・コレクションの回数 |
FGCT | 完全ガベージ・コレクション時間 |
GCT | ガベージ・コレクション総時間(ミリ秒) |
アプリケーションの性能が思わしくない場合、コード上の不具合でなければ、ヒープ・メモリーの状況を監視することで原因がつかめることが多いです。ヒープを監視した結果のログは、ツールを使ってグラフィカルに解析することも可能であるほか、ログ自身からもヒープの状況を細かく追跡できます。実運用後の監視でも、特にガベージ・コレクションの回数をチェックしておくことは重要です。
それぞれの項目(ヒープ領域)に関する内容は、次ページで細かく説明します。
連載バックナンバー
Think ITメルマガ会員登録受付中
Think ITでは、技術情報が詰まったメールマガジン「Think IT Weekly」の配信サービスを提供しています。メルマガ会員登録を済ませれば、メルマガだけでなく、さまざまな限定特典を入手できるようになります。