JDK-6484982 : G1: process references during evacuation pauses
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: hs20,7
  • Priority: P3
  • Status: Closed
  • Resolution: Fixed
  • OS: generic
  • CPU: generic
  • Submitted: 2006-10-23
  • Updated: 2013-09-18
  • Resolved: 2012-01-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.
JDK 7 JDK 8 Other
7u2Fixed 8Fixed hs22Fixed
Related Reports
Duplicate :  
Right now, G1 only processes references (as well as enqueueing objects for finalization) during marking cycles and not during evacuation pauses. Even though we haven't seen actual issues with the lack of prompt reference processing, it is easy to imagine an application that allocates a lot of short-lived finalizable objects to require more resources that really needed, as finalizable objects (and the resources they are holding on to) are piled up in the heap, waiting for a marking cycle to be processed.


EVALUATION http://hg.openjdk.java.net/hsx/hsx22/hotspot/rev/d320dd70ca40

EVALUATION http://hg.openjdk.java.net/hsx/hotspot-gc/hotspot/rev/4dfb2df418f2

EVALUATION Make the current G1 reference processor discover reference objects during concurrent marking only. Add a stop-the-world reference processor to discover reference objects during evacuation pauses. The STW reference processor would also be employed during full GCs. The two reference processors have slightly different attributes: with the STW reference processor, assignments to the _discovered the field do not need a barrier and discovery is atomic w.r.t. the Java application; with the concurrent reference processor assignmnets to the discovered field _do_ need a barrier and also discovery is not atomic w.r.t. the Java app. Also reference objects 'discovered' by the CM reference processor have to persist across evacuation pauses (they are processed during remarking) even those reference objects that happen to be in the collection set.