RFR(XS): 8001425: G1: Change the default values for certain G1 specific flags

John Cuthbertson john.cuthbertson at oracle.com
Thu Jan 10 00:28:17 UTC 2013


Hi Everyone,

Can I have a couple of volunteers look of the code changes for this CR? 
The webrev can be found at: 
http://cr.openjdk.java.net/~johnc/8001425/webrev.0/

Background:
These changes change the default values of:

G1MixedGCLiveThresholdPercent from 90 down to 65
This means that we we don't consider regions with a live occupancy > 65% 
as good candidates for collection during the next mixed GC phase. 
Evacuating regions that have a high live occupancy can get expensive and 
a 90% cut off was deemed to be too high.

G1HeapWastePercent up from 5% to 10%
This means that we are prepared to sacrifice 10% of the heap to avoid 
really expensive mixed GCs.

G1MixedGCCountTarget up from 4 to 8
We can do up to 8 mixed GCs after a marking cycle instead of 4. This 
should mean that an individual mixed GC is less expensive and we should 
collect more regions before we reach the regions that are really 
expensive to collect.

And for heaps no more than 4GB:

G1NewSizePercent is reduced from 20% to 5%. This value was placing a 
lower bound on how far we could shrink the young generation. 20% was 
deemed to be too high.

G1MaxNewSizePercent is reduced from 80% to 60%. A value of 80% was 
allowing the young generation to grow too large increasing the 
possibility of evacuation failures.

These new values have been suggested by the performance team based upon 
their tuning experiments (including feedback from people the performance 
team has helped out).

Going forward I think some of these values should be set dynamically. 
For example G1MixedGCLiveThresholdPercent could be tied to the overall 
heap occupancy.

Thanks,

JohnC



More information about the hotspot-gc-dev mailing list