CMS GCについて
はここが大変わかりやすく勉強になりました。
http://cco.hatenablog.jp/entry/2014/12/01/162240
なにを勘違いしていたのか
上記のサイトを見たり、仕事で使っているサーバを参考にとりあえず以下の感じで、CMS GCを設定していました。
-XX:+UseConcMarkSweepGC
-XX:CMSInitiatingOccupancyFraction=40
これでold領域が40%になればCMS GCが走ってくれる!
というのが勘違いでした。。。
実際は
上記の設定だと初めてold領域が40%に達したときのみCMS GCが走ります。。
その後は100%になるまでCMS GCが走らないことも。。
そうじゃなくて、毎回40%でCMS GCに動いて欲しい。。。><
解決策
-XX:+UseCMSInitiatingOccupancyOnly
これを追加してあげればよかった!
これを設定するとCMS発生の起因をCMSInitiatingOccupancyFraction
のみにするそうです。
無事毎回40%のタイミングでCMS GCが走るようになって幸せです。^^