#939 – Not All Objects on Heap Are Promoted to Next GC Generation
September 26, 2013 Leave a comment
Objects on the managed heap are grouped into generations by the garbage collector (GC), as follows:
- Generation 0 – Objects that have been created since the last GC pass (newest objects)
- Generation 1 – Objects that have survived one pass of the GC
- Generation 2 – All other objects (oldest objects)
Objects are only promoted to the next generation if the generation that they are currently located in is examined and collected during a garbage collection pass.
This means:
- Since the GC always examines Gen 0 during any GC pass, Gen 0 objects that survive a garbage collection are always promoted to Gen 1.
- Objects in Gen 1 are only promoted to Gen 2 if Gen 1 is examined and collected during a GC pass and the object survives. The GC will very often do only a Gen 0 pass during collection. When the GC only examines and collects Gen 0, Gen 1 objects are not examined and therefore not promoted to Gen 2.