JDK-6928073 : G1: use existing command line parameters for marking cycle initiation
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: hs17
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2010-02-19
  • Updated: 2013-09-18
  • Resolved: 2011-03-08
The Version table provides details related to the release that this issue/RFE will be addressed.

Unresolved : Release in which this issue/RFE will be addressed.
Resolved: Release in which this issue/RFE has been resolved.
Fixed : Release in which this issue/RFE has been fixed. The release containing this fix may be available for download as an Early Access Release or a General Availability Release.

To download the current JDK release, click here.
JDK 6 JDK 7 Other
6u21Fixed 7Fixed hs17Fixed
Related Reports
Relates :  
This is part of the G1 command line parameter changes enumerated in 6928059.

In G1 marking cycle initiation depends on the combination of the G1SteadyStateUsed and G1SteadyStateUsedDelta parameters. We should remove them and instead use a new InitiatingHeapOccupancyPercent parameter.

EVALUATION ChangeSet=http://hg.openjdk.java.net/jdk7/hotspot-gc/hotspot/rev/1c72304f1885,ChangeRequest=6928073

PUBLIC COMMENTS This was easier than I thought it would be. G1SteadyStateUsed is not actually used in its original role (to be a "hard limit" and when it's reached to have to do an evacuation pause). Instead, G1MinResercePercent (which is being renamed to G1ReservePercent) is used instead (which is a better named parameter anyway). G1SteadyStateUsed was only used for the marking cycle initiation decision, in conjunction with G1SteadyStateUsedDelta. So, these two parameters they were very easily replaced with InitiatingHeapOccupancyPercent. In CMS, here's the description of CMSInitiatingOccupancyFraction: product(intx, CMSInitiatingOccupancyFraction, -1, \ "Percentage CMS generation occupancy to start a CMS collection " \ "cycle. A negative value means that CMSTriggerRatio is used") \ In G1 we will simplify that and we will only have InitiatingHeapOccupancyPercent and no parameter equivalent to CMSTriggerRatio (which is not used widely anyway... in fact, in the tuning guide / presentations we only mention CMSInitiatingOccupancyFraction, and no CMSTriggerRatio). I'm setting the default value for InitiatingHeapOccupancyPercent to 45%. CMS uses around 60%, but this is over the old generation and not over the entire heap. Imagine that the young gen is taking up about 25% of the heap, 60% over the old gen is around 45% over the entire heap.

EVALUATION See Comments.