JDK-7117314 : G1: Ensure that each ref field is scanned exactly once during evacuation pauses
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: hs23
  • Priority: P3
  • Status: Closed
  • Resolution: Duplicate
  • OS: generic
  • CPU: generic
  • Submitted: 2011-12-02
  • Updated: 2024-02-23
  • Resolved: 2024-02-23
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.
Other
tbdResolved
Related Reports
Duplicate :  
Relates :  
Description
Currently, the G1 GC code is robust wrt to a reference field being scanned twice. The main reason this was done was to deal with cards being scanned twice (given that currently a GC worker that scans a card does not claim it atomically). See also "7114095: G1: assert(obj == oopDesc::load_decode_heap_oop(p)) failed: p should still be pointing to obj" for an additional scenario.

The downside of the above approach is that we need two "is in CSet" checks for every ref field we push on / pop from the "to do" taskqueue. If we guarantee that each ref field is scanned once we can avoid the second check which might speed up GCs (a bit) and will also simplify the GC code.