GCの発生頻度などの調査
GCの発生頻度を調査するためのカンペ。gclogを使用せずにお手軽に実施できる。
まずはプロセスIDを調べる。例としてtomcatの場合。
$ sudo -u tomcat jps -vtomcatユーザの起動したJavaプロセスのIDを付加情報付きで表示する。
javaプロセスがひとつしかない場合などは、下記のほうが楽かもしれない。
$ pgrep -lf javaPIDが123456だった場合、3秒ごとにgcの発生状況をチェックするコマンドの例。
jstat -gcutil -t 123456 3000意味は以下のとおり。
jstat <出力オプション> <プロセスID> <データ取得間隔(ms)> -t タイムスタンプを出力 -gcutil GCの統計情報
jstatのマニュアルは以下。
gcutilの見出し
Timestamp S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT
gcutilの見出しは以下のルールになる
| S* | Suviver | |
| E* | Eden | |
| Y | Young | |
| O* | Old | |
| P* | Permenet | Permanent領域は、JVMにロードされたクラスの置き場所 |
| F* | Full | |
| *C | comitted | javaが確保したメモリサイズ |
| *U | used | 使用済みメモリ |
| *GC | GCの回数 | |
| *GCT | GCの時間 |
GCについては、下記が詳しい。
- http://www.atmarkit.co.jp/ait/articles/0404/02/news079.html
- http://www.atmarkit.co.jp/ait/articles/0211/30/news002.html
メモリ使用量を確認したいとき
gcオプションを使えばよい。
$ sudo jstat -gc -t 12345 3000
ざる魂