title: Unexpected GC behaviour: some data always going into the tenure generation
body: <p>Ran a very simple code to try to see how garbage collectors function.</p>
  
  <pre><code>String a = null;
  while ( true ) {
    a = new String(" no... ");
  }
  </code></pre>
  
  <p>I am using ParallelGC. I printed GC results and here is the first (minor) GCs.</p>
  
  <pre><code>[GC [PSYoungGen: 16448K-&gt;1616K(19136K)] 16448K-&gt;1624K(62848K), 0.0022134 secs] [Times: user=0.00 sys=0.00, real=0.00 secs]
  </code></pre>
  
  <p>youngGen came down by <code>14880K</code>
  however fullHeap came down by just <code>14872K</code></p>
  
  <p>Does this mean 8k has moved to the tenure generation? My understanding is the GC might have been called some instanced of class 'a' must have been marked alive and moved to the tenure generation. Is this understanding correct? Also, is this "<a href="http://www.oracle.com/technetwork/java/javase/gc-tuning-6-140523.html#cms.floating_garbage" rel="nofollow">Floating Garbage</a>"? Overtime the tenure generation does get filled up and a fullGC is required, however it does take awhile.</p>
  
  <p>Also, in this particular case, shoudln't the entire minor collection get collected and ideally nothing goes into the tenure generation? All these are short lived objects.</p>