JDK 18 |
---|
18 b17Fixed |
Blocks :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
|
Relates :
|
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
|