Request for review (s) - 8021809: Partitioning based on eden sampling during allocation not reset correctly

Jon Masamitsu jon.masamitsu at
Mon Aug 12 18:19:05 UTC 2013

I'm reinstating this request as is.

The observed failure which caused me to withdraw this is
due to a different bug 8022817.  The fix for 8022817 will
be reviewed separately.



On 7/30/13 3:52 PM, Jon Masamitsu wrote:
> The partitioning of eden for parallel CMS initial mark and remark
> depends of the setting of _eden_chunk_index to correctly reflect
> the occupancy of eden.  For example if _eden_chunk_index is 3,
> then  eden should be dividable into 3 chunks, each chunk
> available for parallel processing.  In particular after a young
> gen collection when eden is empty, the broken code depends on
> _eden_chunk_index being 0.  The resetting of _eden_chunk_index
> is done in the gc_epilogue() of the CMS gen.  When
> 1) a System.gc() is called
> and
> 2) UseCMSCompactAtFullCollection is set to false
> the CMS generation tells GenCollectedHeap that CMS
> does not collect the young gen.  So the young gen is
> collected first and then the CMS gen is collected.  In
> this case the CMS gen gc_epilogue() is not called
> after the young gen collection and _eden_chunk_index
> is not cleared.  The gc_epilogue() methods are called after the
> completion of the collection (after the CMS gen is
> collected).  This is the expected behavior for when the
> gc_epilogue() is called.
> This fix adds a guard that checks if eden is empty,
> skipping eden processing if it is.

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the hotspot-gc-dev mailing list