2014/06/13

java MemoryUsage チューニング

MemoryUsage オブジェクトには、次の 4 つの値があります。

    初期値:init     起動中に Java 仮想マシンがオペレーティングシステムから要求するメモリー管理のための初期メモリー量 (バイト単位) を表す。Java 仮想マシンは、オペレーティングシステムから追加のメモリーを要求したり、システム時間の経過とともにメモリーを解放したりすることもできる。init の値は指定しなくてもかまわない
    現在値:used     現在使用されているメモリーの量 (バイト単位) を表す
    確保値:committed     Java 仮想マシンが使用できることが保証されているメモリーの量 (バイト単位) を表す。 コミットされたメモリーの量は、時間の経過とともに変化 (増減) する。Java 仮想マシンはシステムに対してメモリーを解放できる。committed は init 未満であることも可能。 committed は、常に used 以上になる
    最大値:max     メモリー管理に使用できる最大メモリー量 (バイト単位) を表す。この値は定義しないことも可能。定義する場合、メモリーの最大量は時間の経過とともに変化する可能性がある。max が定義された場合、used および committed メモリーの量は常に max 以下になる。used <= max が true の場合でも used > committed などのように、used メモリーを増やそうとするとメモリーの割り当てが失敗する可能性がある (たとえば、システムの仮想メモリーが少ない場合)
   
 例:HeapSize=1024M
initの値:
  PS Old Gen  683M
   PS Eden Space 256M
   PS Survivor Space 42M

==>newRadioの最適値は?683/(256+42)=2.2 デフォルト値は2、まぁ。。大体。。
==>xmxの最適値は?683+256+42=981M ギリギリ。
==>SurvivorRatioの最適値は? 256/42=6.09 デフォルトは8 ここはちょっと調整できる。