Integrated: Preempt old preparation

Kelvin Nilsen kdnilsen at openjdk.java.net
Wed Oct 13 19:06:26 UTC 2021


On Tue, 12 Oct 2021 21:15:01 GMT, Kelvin Nilsen <kdnilsen 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.

This pull request has now been integrated.

Changeset: aa775e99
Author:    Kelvin Nilsen <kdnilsen at openjdk.org>
URL:       https://git.openjdk.java.net/shenandoah/commit/aa775e9971207c4325ef447767940dcdfc11e135
Stats:     192 lines in 12 files changed: 117 ins; 11 del; 64 mod

Preempt old preparation

Reviewed-by: wkemper

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

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


More information about the shenandoah-dev mailing list