Blocks :
|
TLABs need to be made parseable before GC. This means to fill remaining space with a dummy object, so that there remain no holes in the heap, and the heap becomes contiguously filled with objects. However, since we cannot (generally) fill holes with arbitrarily small objects, we need an 'allocation reserve' at the end of TLABs (and PLABs). Current PLAB and TLAB reserve assumes a specific object size. GCs like Shenandoah need to allocate a little more space per object and thus require some abstraction to get the minimum filler object size / allocation reserve.