RFR: 8298647: GenShen require heap size 2MB granularity

Stuart Monteith smonteith at openjdk.org
Mon Jan 16 21:48:24 UTC 2023


Generational Shenandoah requires 2MB granularity in order for card tables to cover the allocated heap. Each byte in a page of card table represents 512 heap bytes. As card tables are allocated 4KB at a time, 4KB * 512 = 2MB.

There is a circular dependency between the region calculations and the heap size calculations. This unconditionally rounds up the heap size to 2MB. It might be preferable to do this only when generational mode is enabled.

Running with:
  java -Xlog:gc*=trace -XX:+UseShenandoahGC -mx495m \
       -XX:ShenandoahGCMode=generational -version

on a debug build is sufficient to reproduce this problem.

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

Commit messages:
 - 8298647: GenShen require heap size 2MB granularity

Changes: https://git.openjdk.org/shenandoah/pull/202/files
 Webrev: https://webrevs.openjdk.org/?repo=shenandoah&pr=202&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8298647
  Stats: 4 lines in 1 file changed: 4 ins; 0 del; 0 mod
  Patch: https://git.openjdk.org/shenandoah/pull/202.diff
  Fetch: git fetch https://git.openjdk.org/shenandoah pull/202/head:pull/202

PR: https://git.openjdk.org/shenandoah/pull/202


More information about the shenandoah-dev mailing list