JDK-8043574 : Investigate decreasing the RS scrubbing work in the GC cleanup pause
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 8u20,9
  • Priority: P4
  • Status: Closed
  • Resolution: Duplicate
  • Submitted: 2014-05-20
  • Updated: 2016-11-24
  • Resolved: 2014-11-03
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 9
9Resolved
Related Reports
Duplicate :  
Relates :  
Description
During GC cleanup G1 scrubs the entire remembered set, i.e. removes stale remembered set entries.

This can take a while for large remembered sets, and lengthens the GC cleanup pause a lot.

Conceptually it is not necessary to do this RSet scrubbing in the GC cleanup pause - presumably it is currently done there because after marking completed, you get the most gain out of this.

It could be done concurrently to the mutator or incrementally in other pauses.

Think of ways to distribute this work across mutator or gc time.
Comments
Concurrent scrubbing could be done by: 1) during gc pause, disconnect the remembered set of the target region(s) from these regions, and empty it 2) a concurrent thread iterate over the cards of the remembered sets one by one and if a cross-region reference is found, add an entry to the corresponding remembered set.
05-08-2014

Linked to JDK-7187490: the linked issue is about delaying RSet scrubbing
22-05-2014