ラベル jvm の投稿を表示しています。 すべての投稿を表示
ラベル jvm の投稿を表示しています。 すべての投稿を表示

2014年8月15日金曜日

PermGenの増加について

アプリケーションの負荷テスト実行中、PermGenが現象しない場合、OutOfMemory の可能性がある。以下のように、PermGenが減るかどうか確認が必要。

 S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
 19.81   0.00  90.04   4.83 100.00     66    2.889     4    1.306    4.195
 19.81   0.00  90.92   4.83 100.00     66    2.889     4    1.306    4.195
 19.81   0.00  90.92   4.83 100.00     66    2.889     4    1.306    4.195
 19.81   0.00  91.81   4.83 100.00     66    2.889     4    1.306    4.195
 19.81   0.00  92.05   4.83 100.00     66    2.889     4    1.306    4.195
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
 19.81   0.00  92.05   4.83 100.00     66    2.889     4    1.306    4.195
 19.81   0.00  92.92   4.83 100.00     66    2.889     4    1.306    4.195
 19.81   0.00  92.92   4.83 100.00     66    2.889     4    1.306    4.195
 19.81   0.00  94.82   4.83  99.27     66    2.889     4    1.306    4.195
 19.81   0.00  95.01   4.83  99.27     66    2.889     4    1.306    4.195
  S0     S1     E      O      P     YGC     YGCT    FGC    FGCT     GCT
 19.81   0.00  95.01   4.83  99.27     66    2.889     4    1.306    4.195
 19.81   0.00  95.55   4.83  99.27     66    2.889     4    1.306    4.195
 19.81   0.00  95.55   4.83  99.27     66    2.889     4    1.306    4.195

上記は、PermGenが 100 になってから、99.27に減少している。その間、FullGCは発生していない。

consoleでjavaアプリケーションのJVMメモリ領域を確認する

jstatコマンドを使う。

$JAVA_HOME/bin に 標準で付属する jstatコマンドは以下のオプションを指定する。

jstat -出力オプション(-h[ヘッダーを出力する行間隔]) [プロセス番号] [出力間隔(ミリ秒)]
ex) >sudo ./jstat -gcutil -h5 1905 3000














上記の出力を得ることが出来る。各値の意味は、以下。


  • S0 Survivor領域0(From)の使用率(現在の容量に対するパーセンテージ)
  • S1 Survivor領域1(To)の使用率(現在の容量に対するパーセンテージ)
  • E Eden領域の使用率(現在の容量に対するパーセンテージ)
  • O Old領域の使用率(現在の容量に対するパーセンテージ)
  • P Permanent領域の使用率(現在の容量に対するパーセンテージ)
  • YGC New領域のカベージ・コレクションの回数
  • YGCT New領域のガベージ・コレクション時間(ミリ秒)
  • FGC 完全カベージ・コレクションの回数
  • FGCT 完全ガベージ・コレクション時間
  • GCT ガベージ・コレクション総時間(ミリ秒)