RFR: 8293650: Shenandoah: Support archived heap objects [v3]
Aleksey Shipilev
shade at openjdk.org
Tue Aug 13 19:51:10 UTC 2024
> This implements CDS Java heap loading for Shenandoah. There are peculiarities with how CDS loads objects: it basically asks for a contiguous block of memory, fills it out, potentially relocating the objects. This gets interesting when a single Shenandoah region cannot contain the entirety of the load. See the implementation for gory details.
>
> Current implementation would work well only with Shenandoah heap regions >= 1M, in other words, with the heaps >=2G. It would be better if we trim down the min alignment, thus unblocking smaller heaps. It is not necessary to do so in this PR, so I track that work separately: [JDK-8337828](https://bugs.openjdk.org/browse/JDK-8337828).
>
> Additional testing:
> - [x] New test
> - [x] Linux AArch64 server fastdebug, `all` with `-XX:+UseShenandoahGC -XX:+ShenandoahVerify`
> - [x] Same as above, but `MIN_GC_REGION_ALIGNMENT` manually dropped to 256K (mimics [JDK-8337828](https://bugs.openjdk.org/browse/JDK-8337828))
Aleksey Shipilev has updated the pull request with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains five additional commits since the last revision:
- Review comments
- Merge branch 'master' into JDK-8293650-shenandoah-archives
- Move constant to separate class to unbreak Windows builds
- Touchups in test
- Basic implementation, works well, passes tests
-------------
Changes:
- all: https://git.openjdk.org/jdk/pull/20468/files
- new: https://git.openjdk.org/jdk/pull/20468/files/3a8fa655..361a67db
Webrevs:
- full: https://webrevs.openjdk.org/?repo=jdk&pr=20468&range=02
- incr: https://webrevs.openjdk.org/?repo=jdk&pr=20468&range=01-02
Stats: 11518 lines in 407 files changed: 4509 ins; 5515 del; 1494 mod
Patch: https://git.openjdk.org/jdk/pull/20468.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/20468/head:pull/20468
PR: https://git.openjdk.org/jdk/pull/20468
More information about the shenandoah-dev
mailing list