JDK-8049051 : Use of during_initial_mark_pause() in G1CollectorPolicy::record_collection_pause_end() prevents use of seperate object copy time prediction during marking
  • Type: Bug
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 9
  • Priority: P3
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2014-07-02
  • Updated: 2015-01-21
  • Resolved: 2014-07-21
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 8 JDK 9
8u40Fixed 9 b26Fixed
Description
In G1CollectorPolicy::record_collection_pause_end() the call to record_concurrent_mark_init_end(0.0) will always set the flag _during_initial_mark_pause to false. A few lines further down in G1CollectorPolicy::record_collection_pause_end() there is an if statement:

  if (during_initial_mark_pause())

The 'then' branch of this if statement will never be taken if we called record_concurrent_mark_init_end.
Comments
Impact: Medium, might hurt performance Likelihood: Medium, will happen every time the last G1 pause included an initial mark Workaround: High, there is no way to work around this ILW = MMH => P3
07-07-2014