2014/3/25

GCの発生頻度を調査するためのカンペ。gclogを使用せずにお手軽に実施できる。

まずはプロセスIDを調べる。例としてtomcatの場合。

$ sudo -u tomcat jps -v

tomcatユーザの起動したJavaプロセスのIDを付加情報付きで表示する。

javaプロセスがひとつしかない場合などは、下記のほうが楽かもしれない。

$ pgrep -lf java

PIDが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については、下記が詳しい。

1 メモリ使用量を確認したいとき

gcオプションを使えばよい。

$ sudo jstat -gc -t 12345 3000
blog comments powered by Disqus