Javaヒープ領域の使用量と容量をコマンドラインから取得する #java
JDKに標準で入っているjstatコマンドを使います。jstatコマンドではJavaヒープ領域中のNew領域・Old領域・Permanent領域の使用量・容量・最小容量・最大容量などを取得することができます。
※ 2015/06/24追記: こちらはJava7までのヒープ領域についての記事です。Java8はPermanent領域がないなどの違いがあるため、別途Java8のjstat公式ページを参照してください。
Javaヒープについて
Javaヒープ領域を指定するJVMオプションは-Xms,-Xmxです。このオプションで指定しているJavaヒープ領域のサイズはNew領域とOld領域を合算したものとなり、Permanent領域は含まれていません。また、New領域はSurvivor領域0(From)+Survivor領域1(To)+Eden領域の合算です。
取得方法
-gcオプションでJavaヒープ領域の全ての容量を取得できます。
$ /usr/java/default/bin/jstat -gc `pidof java` S0C S1C S0U S1U EC EU OC OU PC PU YGC YGCT FGC FGCT GCT 3264.0 3264.0 0.0 3264.0 26240.0 20019.6 98304.0 10708.0 21248.0 15226.6 3 0.068 0 0.000
また、JVMオプションで指定した値と各領域の最小容量・最大容量は、-gcオプションのそれぞれの値と合致します。
- -XX:MaxNewSize= NGCMX (32MB)
- -Xms = NGCMN * OGCMN (128MB)
- -Xmx = NGCMX * OGCMX (256MB)
- -XX:MaxPermSize = PGCMX (64MB)
-gcオプション
公式から引用します。
列 | 説明 |
---|---|
S0C | Survivor 領域 0 の現在の容量 (KB) |
S1C | Survivor 領域 1 の現在の容量 (KB) |
S0U | Survivor 領域 0 の使用率 (KB) |
S1U | Survivor 領域 1 の使用率 (KB) |
EC | Eden 領域の現在の容量 (KB) |
EU | Eden 領域の使用率 (KB) |
OC | Old 領域の現在の容量 (KB) |
OU | Old 領域の使用率 (KB) |
PC | Permanent 領域の現在の容量 (KB) |
PU | Permanent 領域の使用率 (KB) |
YGC | 若い世代の GC イベント数 |
YGCT | 若い世代のガベージコレクション時間 |
FGC | フル GC イベント数 |
FGCT | フルガベージコレクション時間 |
GCT | ガベージコレクション総時間 |
*1:公式では使用量ではなく使用率と表記されています。