jstat -gc
でJVMのメモリ使用状況を確認する際によく使うのですが、少し見づらいと感じま
したので、整形用のオレオレスクリプトを作成しました。
jstat出力見づらい要因として
- 出力単位がbyteとなっています、数字長い時目視でメガバイト(mb)への換算が大変
- ヘッダ行と値行がズレる時があります
デフォルトの出力形式は以下の通り
$ jstat -gc 10901 S0C S1C S0U S1U EC EU OC OU MC MU CCSC CCSU YGC YGCT FGC FGCT GCT 55296.0 55296.0 0.0 0.0 334336.0 157179.1 890368.0 23266.0 35748.0 32020.9 5248.0 4068.9 3 0.124 2 0.195 0.320
次は自作スクリプトで整形後の出力形式(JDK8の場合)
--------------------------------------------- S0 領域 | 54.00 / 0.00 (MB) | 0.00% S1 領域 | 54.00 / 0.00 (MB) | 0.00% Eden領域 | 326.50 / 170.63 (MB) | 52.26% Old 領域 | 22.72 / 869.50 (MB) | 2.61% Meta領域 | 31.27 / 34.91 (MB) | 89.57% CCPS領域 | 3.97 / 54.00 (MB) | 77.53% --------------------------------------------- YGC 回数 | 3 回 YGC 時間 | 0.12 秒 FGC 回数 | 2 回 FGC 時間 | 0.20 秒 ---------------------------------------------
コードはgithubに公開しています。
出力加工機能以外、次の便利な機能も提供しています。
- JavaプロセスID自動特定する
- JAVA_HOMEを自動的に特定する