TomcatのPIDを調べ、jstat コマンドを実行すればOK
TomcatのPIDの調査
まずはプロセスIDを調べます。
$ su - tomcat
$ jsp -v
または
$ sudo -u tomcat jps -v
tomcatユーザの起動したJavaプロセスのIDを付加情報付きで表示します。
javaプロセスがひとつしかない場合などは、下記のコマンドを実行します。
$ pgrep -lf java
jstat コマンドでGCの統計情報を見る
jstat コマンドの -gcutil オプションで見ることができます。
PIDが54321だった場合、5秒ごとにgcの発生状況をチェックするコマンドの例。
$ jstat -gcutil -t 54321 5000
実行するコマンドの意味は以下の通り。
jstat <出力オプション> <プロセスID> <データ取得間隔(ms)>
-gcutil GCの統計情報
-t タイムスタンプを出力
詳しくはjstatのマニュアルを見てください。
gcutilの見出しについて
gcutil の見出しの見方は下記の通り。
Timestamp S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT
gcutilの見出しの詳細
列 | 説明 |
---|---|
S0 | Survivor 領域 0 の使用率 (現在の容量に対するパーセンテージ) |
S1 | Survivor 領域 1 の使用率 (現在の容量に対するパーセンテージ) |
E | Eden 領域の使用率 (現在の容量に対するパーセンテージ) |
O | Old 領域の使用率 (現在の容量に対するパーセンテージ) |
P | Permanent 領域の使用率 (現在の容量に対するパーセンテージ) |
*C | javaが確保したメモリサイズ |
*U | 使用済みメモリ |
YGC | 若い世代の GC イベント数 |
YGCT | 若い世代のガベージコレクション時間 |
FGC | フル GC イベント数 |
FGCT | フルガベージコレクション時間 |
GCT | ガベージコレクション総時間 |
Java8の場合
2015/01/09 追記
Java8はpermgenがなくなってmetaspaceになったので、P -> M に変わってました・・
# jstat -gcutil xxxx
S0 S1 E O M CCS YGC YGCT FGC FGCT GCT
0.00 0.00 1.21 31.14 92.92 82.55 137 4.152 729 288.021 242.212
調査の上まとめます。
メモリ使用量の確認
メモリ使用量を確認したいときはgcオプションを使えばOK。
# jstat -gc -t 12345 5000