The census for age-0 objects means something different than the census for all other ages. In particular, everything allocated during a particular cycle is considered to have age 0 at the end of that cycle. We cannot reclaim any of these objects until the next GC cycle.
Normally, we take the census at the end of concurrent marking. But age-0 objects will continue to accumulate during evacuation and update-refs.
The auto-tenure-age selection algorithm considers the delta between census at age 0 during cycle N and census at age 1 during cycle N+1. If this delta is sufficiently small, it concludes that we should promote objects of age 1, because these cohorts have demonstrated low mortality.
There is a suspicion that this choice causes undesirable premature promotion.
Either we need to understand and document this as a desirable behavior, or we want to disable auto-tenuring-age-selection from choosing age 1 as the promotion age.
A test workload has been demonstrated to generate almost 3x the amount of old-gen garbage between the GenShen version on 6/15 and the GenShen version on 9/11.