Integrated: 8191565: Last-ditch Full GC should also move humongous objects

Ivan Walulya iwalulya at openjdk.org
Thu Mar 16 14:19:38 UTC 2023


On Thu, 2 Mar 2023 13:48:10 GMT, Ivan Walulya <iwalulya at openjdk.org> wrote:

> Hi All,
> 
> Please review this change to move humongous regions during the Last-Ditch full gc ( on `do_maximal_compaction`). This change will enable G1 to avoid encountering Out-Of-Memory errors that may occur due to the fragmentation of memory regions caused by the allocation of large memory blocks.
> 
> Here's how it works: At the end of `phase2_prepare_compaction`, G1 performs a serial compaction process for regular objects, which results in the heap being divided into two parts. The first part is a densely populated prefix that contains all the regular objects that have been moved. The second part consists of the remaining heap space, which may contain free regions, uncommitted regions, and regions that are not compacting. By moving/compacting the humongous objects in the second part of the heap closer to the dense prefix, G1 reduces the region fragmentation and avoids running into OOM errors.
> 
> We have enabled for G1 the Jtreg test that was previously used only for Shenandoah to test such workload. 
> 
> Testing: Tier 1-3

This pull request has now been integrated.

Changeset: 96889bf3
Author:    Ivan Walulya <iwalulya at openjdk.org>
URL:       https://git.openjdk.org/jdk/commit/96889bf3e4f36fa7f9e9b9989a1bc3ac4719bfeb
Stats:     401 lines in 15 files changed: 322 ins; 47 del; 32 mod

8191565: Last-ditch Full GC should also move humongous objects

Reviewed-by: tschatzl, sjohanss

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

PR: https://git.openjdk.org/jdk/pull/12830


More information about the shenandoah-dev mailing list