RFR: 8376125: Out of memory in the CDS archive error with lot of classes [v9]

Ioi Lam iklam at openjdk.org
Wed Feb 18 09:01:35 UTC 2026


On Wed, 18 Feb 2026 08:48:08 GMT, Xue-Lei Andrew Fan <xuelei at openjdk.org> wrote:

>> src/hotspot/share/cds/aotCompressedPointers.hpp line 44:
>> 
>>> 42:   //
>>> 43:   // Note: This encoding is ONLY for compact hashtable values. General pointer serialization
>>> 44:   // (WriteClosure/ReadClosure::do_ptr) uses raw byte offsets without scaling.
>> 
>> We actually use `narrowPtr` in many other places, such as in [RunTimeLambdaProxyClassKey](https://github.com/openjdk/jdk/blob/03703f347df7d3507ffeaf45e32be8bec6403b7d/src/hotspot/share/cds/lambdaProxyClassDictionary.hpp#L135-L142). Usually we do that to reduce footprint and reduce runtime pointer patching.
>> 
>> I think when storing an offset into the AOT cache, we should always use `narrowPtr` for uniformity. The "raw" offset such as `ArchiveBuilder::any_to_offset()` should be only used for internal operations while building the AOT cache.
>> 
>> I have a [patch](https://github.com/iklam/jdk/commit/6d6b9332a5d7c18374d2d13f72a4cc00479afafd) that fixes two places (that I missed in https://github.com/openjdk/jdk/pull/29590):
>> - Make sure `CompactHashtableWriter::_compact_buckets` is 8-byte aligned on x64.
>> - Fixed the decoding of vtable decoding in serviceability agent.
>
>> I have a [patch](https://github.com/iklam/jdk/commit/6d6b9332a5d7c18374d2d13f72a4cc00479afafd) that fixes two places
> 
> @iklam This is a cleaner design.  The patch looks good to me,  and passed my test cases.  Thank you for the suggestion.   May I merge the patch into this pull request?

Yes, please feel free to merge it.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/29494#discussion_r2821139473


More information about the serviceability-dev mailing list