[gclist] object aging rates in generational collectors

Ji-Yong D. Chung virtualcyber@erols.com
Thu, 4 Oct 2001 22:40:05 -0400


    This question is assumes that the generational collector
uses BIBOP table and that arenas are equally partitioned.

    The question is: doesn't different aging rates of 
different types of objects cause premature collection of ther 
types of objects?

====================================

    Detailed Description of the question

    If one has many arenas in each generation,
[each arena corresponding to a memory pool for an
object type], then rates of objects flowing through 
different generations, as they age, will be different
for different arenas.

    So, say you have 2 arenas, 1 for
pairs, 1 for vectors.  If the rate of object creation
and death is different for pairs and vectors, then
the rate at which live pairs will flow through the generations
will be different from the rate at which live vectors
will move through the generations.

    If the rate of flow (aging) is identical for all
objects, then, when one performs garbage collection,
all the arenas will be "cleaned up equally."
If the rate of flow is not the same, the arena through
which most number of objects move will need GC 
the most.  For other arenas, GC maybe premature.

    In the worst case scenario, one small arena,
which keeps accumulating objects, could trigger
the GC of the whole heap, and thus GC of all
other arenas which do not need GC.

    Is there a solution to this "inefficiency"?

    I speculate the solution would require careful sizing
of arenas to account for different object birth/death
rates for each arena.  Is there a way to determine
this?