title: Java CMS GC Behaviours
body: <p>I have an application that cause to creating lots of garbage. First (and almost one) criteria is low GC pause time. I try different GC parameters using visualgc tool (and gc logs). Best parameters are below.</p>
  <blockquote>
  <p>-XX:+UseConcMarkSweepGC</p>
  <p>-Xmx1172M</p>
  <p>-Xms600M</p>
  <p>-XX:+UseParNewGC</p>
  <p>-XX:NewSize=150M</p>
  </blockquote>
  <p>My application run on SunOS 10 with Java 1.6.0_21 . Hardware is 2 x CPU quad core (uname -X result is numCPU = 8).</p>
  <p>Questions are</p>
  <p>Observing GC behaviours, New objects creating on eden space until eden is full. When eden space full GC runs, clear garbage, if object is not dead copy to Old-gen (I discard 'from' &amp; 'to' spaces), Similarly Old-Gen is full, GC runs with CMS-concurrent phase and clear Old-gen space. Some part of CMS is Stop-the-world (pause time). This is a loop.</p>
  <ol>
  <li>Is above scenerio true?</li>
  <li>After GC clean old-gen space, there is no enough space expand old-gen space(XMS and XMS values are different) ?</li>
  <li>When full GC operation start? How to decided it?</li>
  <li>CMS-concurrent phase duration depends on Eden space size, actually my expectation is, Eden space does not effect CMS-concurrent phase duration. What is going on GC related with eden space on CMS-concurrent phase?</li>
  <li>What else suggest to me minimizing pause time? Indeed, Most valuable answer for me :)</li>
  </ol>
  <p>Thanks</p>