Masa / Lino Blog

Masanori Satoh ( Masa / Lino ) の徒然ブログです

RMIを使用すると1分周期でFullGCが起きる

RMIを使っていると1分間おきに必ずFullGCが起きてしまう。
GCによるPauseタイムに対する要求がシビアなシステムだと大問題。


デフォルトFullGCの周期が短すぎる(1分)ことが問題。
以下のどちらかをJVM起動オプションにつけることで回避可能。

  • -XX:+DisableExplicitGC
    • 1分周期の強制GC停止オプション
  • -Dsun.rmi.dgc.server.gcInterval=と-Dsun.rmi.dgc.client.gcInterval=
    • 単位はミリ秒


ただ、-XX:+DisableExplicitGCをつけてしまうと、System.gc()などの明示的なGCがすべて停止してしまう。
SunのBug Databaseにも出てました。
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6200091
うーんこれってBugなのか。