title: Java GC Concept : CMSInitiatingOccupancyFraction
body: <p>I have the following memory options configured:</p>
  <p><code>export MEM_OPTS=&quot;-Xmx2560m -Xms2560m -XX:NewSize=786m -XX:MaxNewSize=786m -XX:+UseTLAB -XX:MaxPermSize=512m&quot;</code></p>
  <p>My GC parameters are below:</p>
  <p><code>export GC1_OPTS=&quot;-XX:+UseConcMarkSweepGC -XX:+UseParNewGC -XX:**CMSInitiatingOccupancyFraction=50** -XX:+CMSPermGenSweepingEnabled -XX:+CMSClassUnloadingEnabled -XX:+CMSParallelRemarkEnabled -XX:+UseAdaptiveGCBoundary&quot; export GC2_OPTS=&quot;-XX:+ExplicitGCInvokesConcurrent&quot;</code></p>
  <p>When CMS runs, will it run after 50% of 2560 MB or will it run after 50% of 512 MB of memory? What is the concept?</p>
  <p>My total heap memory would be equal to 2560 + 786 + 512 MB, right?</p>
  <p>Or is <code>&quot;-XX:NewSize=786m -XX:MaxNewSize=786m&quot;</code> for NON-heap?</p>
  <p>Please explain the concept.</p>