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