RFR: 8365932: Implementation of JEP 516: Ahead-of-Time Object Caching with Any GC [v10]

Erik Österlund eosterlund at openjdk.org
Tue Oct 28 08:06:08 UTC 2025


On Mon, 27 Oct 2025 17:41:33 GMT, Vladimir Kozlov <kvn at openjdk.org> wrote:

>> Erik Österlund has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 22 commits:
>> 
>>  - Merge branch 'master' into 8326035_JEP_object_streaming_v6
>>  - Missing unlock diagnostic VM options, and remove unintended comment
>>  - Fix for minimal
>>  - Change streaming/mapping states to be binary instead of tri states
>>  - Clean up VMProps
>>  - Make AOTStreamableObjects diagnostic
>>  - Test polishing
>>  - Merge branch 'master' into 8326035_JEP_object_streaming_v6
>>  - Test fix
>>  - move exception marks outside locks
>>  - ... and 12 more: https://git.openjdk.org/jdk/compare/97e5ac6e...3d771ca2
>
> src/hotspot/share/cds/cds_globals.hpp line 83:
> 
>> 81:                                                                             \
>> 82:   product(bool, AOTEagerlyLoadObjects, false, DIAGNOSTIC,                   \
>> 83:           "Load streamable objects synchronously without concurrency")      \
> 
> Can you explain how you use `AOTEagerlyLoadObjects`? Can it be set to `false` when archive has streamable objects?
> 
> Can we use only one flag `AOTStreamableObjects` for both assembly and production phases?

Both flags are diagnostic flags as I don't think ordinary users have any business fiddling with them. The AOTStreamableObjects flag controls whether dumping will dump the GC agnostic streaming format or not. Not setting it implies we will use streaming when compressed oops is off.

As for AOTEagerlyLoadObjects, enabling it when loading a streamable object archive means all objects will be materialized upfront, instead of using concurrent materialization. This is enabled automatically if the environment has one core or less available. At that point, concurrency won't help much, and just getting it over with is a good idea.

But yeah, as a user, you shouldn't really have to fiddle with these at all. They are there for benchmarking the differences.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/27732#discussion_r2468329771


More information about the hotspot-dev mailing list