I'm wondering what are the exact situations that trigger Full Garbage Collection in Java.
The obvious ones are:
- Running out of old gen
- Running out of perm gen
- Calling System.gc()
What about other cases that cause full gc? Particularly:
- Not having enough free space in Survivor Space to copy objects from Eden.
- Minor collections not being able to cope with allocation rate of new objects (don't know how though).
I'm running Sun Java 1.6 and using Concurrent Mark-Sweep and ParNew for new gen.
System.gc(). (And don't forget that it's even possible for a GC algorithm to not even have a concept of a "full collection" - this might sound far-fetched but I've not seen the G1 collector do so on our apps.) - Andrzej Doyle