2017年7月21日金曜日

ヒープの状態とGCの実行回数を表示する(備忘録)

ヒープメモリの状態とGCの実行回数を表示するコマンド

jstat -gcutil -h3 <ProcessID> <表示頻度(ms)>


ex.
jstat -gcutil -h3 4716 5000


  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
 92.74   0.00  76.22   9.29   7.27    188   23.448     0    0.000   23.448
 92.74   0.00  98.90   9.29   7.27    188   23.448     0    0.000   23.448
  0.00  92.31  23.16   9.29   7.27    189   23.630     0    0.000   23.630

<各列の説明>
S0:S0領域の使用率(Young領域)
S1:S1領域の使用率(Young領域)
E :Eden領域の使用率(Young領域)
O :Old領域の使用率(Old領域)
P :Permanent領域の使用率(永続領域)

YGC:YoungGCの発生回数
YGCT:YoungGCの処理時間(秒)
FGC:FullGCの発生回数
FGCT:FullGCの処理時間(秒)
GCT:YoungGCとFullGCの処理時間(秒)


<ヒープの世代>
■Young領域
S0,S1,EdenがYoung領域(Newされてからまだ若いヒープ)
Eden: Newがおこなわれるとまずここにたまる。
S0: Edenから少し年をとったヒープ
S1: Edenから少し年をとったヒープ

■Old領域
 Young領域にある間に、解放されることがなかったヒープ。
 Young領域から、Old領域に移動するタイミングは、YoungGCの回数やS0,S1領域が満杯になったときなどGCアルゴリズムによる。

■Permanent領域
 基本的には永続的に保持するメモリ。主にクラス定義など


<ヒープの容量を表示する>
上記のオプションの「-gcutil」を「-gc」に変えるだけでよい。

jstat -gc -h3 <ProcessID> <表示頻度(ms)>


ex.
jstat -gc -h3 4716 5000


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     ガベージコレクション総時間

※S0CやS0U、ECやEUの「C」はCapacity、「U」はUsageと思われる。

http://docs.oracle.com/javase/jp/7/technotes/tools/share/jstat.html

0 件のコメント:

コメントを投稿