RFR: 8298647: GenShen require heap size 2MB granularity [v3]
Stuart Monteith
smonteith at openjdk.org
Mon Jan 23 11:24:13 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.
Stuart Monteith has updated the pull request incrementally with one additional commit since the last revision:
Check shenandoah generational is enabled.
Only round up for the card table alignment when generational mode is
enabled.
-------------
Changes:
- all: https://git.openjdk.org/shenandoah/pull/202/files
- new: https://git.openjdk.org/shenandoah/pull/202/files/96d4347d..cd1fea84
Webrevs:
- full: https://webrevs.openjdk.org/?repo=shenandoah&pr=202&range=02
- incr: https://webrevs.openjdk.org/?repo=shenandoah&pr=202&range=01-02
Stats: 3 lines in 1 file changed: 2 ins; 0 del; 1 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