Note [Live data accounting in nonmoving collector]

rts/sm/NonMoving.c:388 rts

The nonmoving collector uses an approximate heuristic for reporting live
data quantity. Specifically, during mark we record how much live data we
find in nonmoving_segment_live_words. At the end of mark this is combined with nonmoving_large_words
and nonmoving_compact_words, and we declare this amount to
be how much live data we have on in the nonmoving heap (by setting
oldest_gen->live_estimate).

In addition, we update oldest_gen->live_estimate every time we fill a
segment. This, as well, is quite approximate: we assume that all blocks
above next_free_next are newly-allocated. In principle we could refer to the
bitmap to count how many blocks we actually allocated but this too would be
approximate due to concurrent collection and ultimately seems more costly
than the problem demands.

References 0

This Note does not link to any other.

Referenced by 5