ざる魂

真似ぶ魂、学ぶの本質。知られざる我が魂

GCの発生頻度などの調査

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

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

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

$ sudo jstat -gc -t 12345 3000