Request for review (s) - 8021809: Partitioning based on eden sampling during allocation not reset correctly
ysr1729 at gmail.com
Mon Aug 12 17:28:20 PDT 2013
Reviewed. Looks good to me.
(Btw 8022817 isn't yet visible on bugs.sun.com.)
On Aug 12, 2013, at 11:19, Jon Masamitsu <jon.masamitsu at oracle.com> 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.
> 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
>> 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...
More information about the hotspot-gc-dev