Request for Review (s) - 8060463: ParNew: SurvivorAlignmentInBytes greater then YoungPLABSize cause assert(obj != NULL || plab->words_remaining() < word_sz) failed: Else should have been able to allocate

Jon Masamitsu jon.masamitsu at
Mon Mar 21 03:04:23 UTC 2016

If SurvivorAlignmentInBytes is larger than the size of the promotion
LAB an allocation aligned to SurvivorAlignmentInBytes  may fail. The
allocation of the PLAB depends of the size of the object being
allocated and if the PLAB is successfully allocated the allocation
of the object should succeeded (and is checked by an assertion).
For alignments larger than  PLAB, a larger PLAB is sometimes needed
to allow for the alignment.

The fix does not try to avoid the need for a new PLAB at the
next promotion by making the PLAB even larger.  The large
values of SurvivorAlignmentInBytes  are allowed but not
expected.  I chose not to make the PLAB even larger for a
situation I don't expect to see in practice.

Tested with the newly added test which check a range
of SurvivorAlignmentInBytes values.



More information about the hotspot-gc-dev mailing list