JDK-8271880 : Tighten condition for excluding regions from collecting cards with cross-references
  • Type: Enhancement
  • Component: hotspot
  • Sub-Component: gc
  • Affected Version: 18
  • Priority: P4
  • Status: Resolved
  • Resolution: Fixed
  • Submitted: 2021-08-04
  • Updated: 2021-09-30
  • Resolved: 2021-09-24
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 18
18 b17Fixed
Related Reports
Blocks :  
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Relates :  
Description
During evacuation, particularly during evacuation failure, we collect locations (cards) with inter-region references to regions that need an up-to-date remembered set.

There is (typically) one filter before each enqueue action that filters out such references from the young generation.

This filter is too coarse, it catches regions from the whole young generation (i.e. current eden regions used in this collection and survivor regions which are the eden regions of the next gc), but when there is an evacuation failure live objects will stay in the current eden regions, and need the cards *from* these regions.

Currently during evacuation failure handling (fixup self forwards) we recreate those by rescanning the live objects in the eden regions.

This could be avoided by adding an explicit "new eden/survivor" regions tag in G1HeapRegionAttr and use this to get an exact filter.

A prototype is available at https://github.com/tschatzl/jdk/tree/submit/evac-failure-no-scan-during-remove-self-forwards 
Comments
Changeset: 5a12af76 Author: Thomas Schatzl <tschatzl@openjdk.org> Date: 2021-09-24 12:07:43 +0000 URL: https://git.openjdk.java.net/jdk/commit/5a12af762df0c45edea94fb433bbe0eb54e6505f
24-09-2021