title: What triggers a full garbage collection in Java?
body: <p>I'm wondering what are the exact situations that trigger Full Garbage Collection in Java.</p>
  
  <p>The obvious ones are:</p>
  
  <ul>
  <li>Running out of old gen</li>
  <li>Running out of perm gen</li>
  <li>Calling System.gc()</li>
  </ul>
  
  <p>What about other cases that cause full gc? Particularly:</p>
  
  <ul>
  <li>Not having enough free space in Survivor Space to copy objects from Eden.</li>
  <li>Minor collections not being able to cope with allocation rate of new objects (don't know how though).</li>
  </ul>
  
  <p>I'm running Sun Java 1.6 and using Concurrent Mark-Sweep and ParNew for new gen.</p>