Akira's Tech Notes

Java/JVM | GNU/Linux | Emacs/Lisp | 知的好奇心駆動

header-icon
ネイティブでない日本語で思い付くことや気になることをダラダラ書く、体裁とかは気にしない。読みづらいと感じた時に随時更新する。

[Java道具]jstat -gcの出力を見やすくする

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に公開しています。

jvm_memstst.sh

出力加工機能以外、次の便利な機能も提供しています。

  • JavaプロセスID自動特定する
  • JAVA_HOMEを自動的に特定する

Comments