RFR(M) 8150721: Don't explicitly manage G1 young regions in YoungList

Mikael Gerdin mikael.gerdin at oracle.com
Thu Apr 28 12:37:47 UTC 2016


Hi,

Please review this change to change G1 to stop explicit tracking of all 
young regions in the YoungList class.
With JDK-8150393 the survivor regions are tracked in a GrowableArray. 
This removes the final dependency on keeping a linked list of young 
regions in YoungList and this change is a cleanup to get rid of a lot of 
code related to that.

There are a few notable changes due to this cleanup:
* During full GCs, calls to uninstall the surv rate group for young 
regions were moved to TearDownRegionSetsClosure
* The young RSet sampling thread can no longer iterate over the young 
list to sample RSets, it must instead walk the incremental collection 
set. I would argue that this is more correct anyway since eden regions 
which had not yet been added to the collection set would not have any 
interesting RSets anyway.

I decided to make eden and survivors two different classes for now, 
since it's more clear that they are actually distinct that way.
The reason for keeping G1EdenRegions around when it's practically empty 
is that I plan to move the eden SurvRateGroup object these YoungList 
replacements to get rid of set_region_{eden,survivor}

Webrevs:
Webrev for entire change
http://cr.openjdk.java.net/~mgerdin/8150721/webrev.0.full/
Webrev for not tracking regions in YoungList
http://cr.openjdk.java.net/~mgerdin/8150721/webrev.0.notrack/
Webrev for splitting and renaming the remains of YoungList
http://cr.openjdk.java.net/~mgerdin/8150721/webrev.0.rename/

Bug: https://bugs.openjdk.java.net/browse/JDK-8150721
Testing: RBT GC Testing, Aurora performance testing shows no significant 
regressions

Thanks
/Mikael


More information about the hotspot-gc-dev mailing list