RFR: 8328075: Shenandoah: Avoid forwarding when objects don't move in full-GC

Kelvin Nilsen kdnilsen at openjdk.org
Thu Mar 14 18:34:39 UTC 2024


On Wed, 13 Mar 2024 16:26:30 GMT, Roman Kennke <rkennke at openjdk.org> wrote:

> Currently, in Shenandoah's full-GC, we forward all marked objects (and preserve their headers), even if they don't move. This typically happens for a certain amount of 'sediment' that accumulates at the bottom of the heap. This results in wasted CPU cycles and memory accesses and usage. It can easily be avoided by not forwarding objects that don't move.
> 
> The fix is to simply not forward objects when they don't move.
> 
> Testing:
>  - [x] hotspot_gc_shenandoah
>  - [x] tier1 +UseShenandoahGC

Looks good after Aleksey's assertion comment fix.  (FWIW, i've seen many back-to-back Full GCs that do not relocate any objects on some of the jtreg tests.  Of course, these back-to-back Full GCs hopefully don't represent typical behavior of real workloads.)

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

Marked as reviewed by kdnilsen (no project role).

PR Review: https://git.openjdk.org/jdk/pull/18280#pullrequestreview-1937463062


More information about the shenandoah-dev mailing list