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

Srinivas Ramakrishna ysr1729 at
Tue Aug 13 00:28:20 UTC 2013

Reviewed. Looks good to me.

(Btw 8022817 isn't yet visible on



On Aug 12, 2013, at 11:19, Jon Masamitsu <jon.masamitsu at> wrote:

> 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.
> Thanks.
> Jon
> 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