RFR: Preempt old preparation

Kelvin Nilsen kdnilsen at openjdk.java.net
Tue Oct 12 23:10:15 UTC 2021


On Tue, 12 Oct 2021 21:37:18 GMT, William Kemper <wkemper at openjdk.org> wrote:

>> Previously, all old-gen regions not selected as collection set candidates were "made parseable" during the final-mark safepoint.   Making each of these regions parseable involves coalescing consecutive unmarked objects into contiguous larger objects that contain no pointers.  The process of identifying each span of consecutive unmarked objects within a large number of large heap regions was found to require hundreds of ms in some cases.  This patch changes the behavior so that preparation of heap regions for subsequent evacuation is performed during a concurrent phase of operation.  This concurrent phase must complete before any of the old heap regions placed in the candidate collection set can be evacuated.
>
> src/hotspot/share/gc/shenandoah/shenandoahConcurrentGC.cpp line 75:
> 
>> 73: };
>> 74: 
>> 75: class ShenandoahGlobalCoalesceAndFill : public ShenandoahHeapRegionClosure {
> 
> Not sure how this ended up `shenandoahConcurrentGC.cpp`, last I checked it was defined in `shenandoahHeap.cpp`.

Not sure either.  It is in both places in my branch.  I see no reason for it to be here so am removing it.

-------------

PR: https://git.openjdk.java.net/shenandoah/pull/88


More information about the shenandoah-dev mailing list