RFR: 8365932: Implementation of JEP 516: Ahead-of-Time Object Caching with Any GC [v10]
Vladimir Kozlov
kvn at openjdk.org
Tue Oct 28 17:08:41 UTC 2025
On Tue, 28 Oct 2025 08:03:34 GMT, Erik Österlund <eosterlund at openjdk.org> wrote:
>> 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.
Got it. Thanks you.
An other question: does it mean that if streamable objects are in AOT cache we can't use mmap for them?
So everything is defined during assembly phase which approach is used: streaming or mmap. Right?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27732#discussion_r2470366749
More information about the build-dev
mailing list