RFR: 8250989: Consolidate buffer allocation code for CDS static/dynamic dumping [v2]
Coleen Phillimore
coleenp at openjdk.java.net
Fri Feb 5 23:24:45 UTC 2021
On Tue, 2 Feb 2021 00:13:59 GMT, Ioi Lam <iklam at openjdk.org> wrote:
>> Before this PR, when a static CDS archive is dumped, we would unconditionally allocate a 4GB ReservedSpace and use that as the buffer for writing the archive content. We usually don't need such a big ReservedSpace. this also unnecessarily complicates Metaspace::global_initialize().
>>
>> After this PR, both we first load all the classes and then allocate a buffer with an appropriate size.
>>
>> I also simplified the pointer relocation code that prepares the archive to be mapped at the "requested location" (usually 0x800000000), and improved the comments.
>>
>> We used to have lots of special cases for adjusting pointers during dynamic dump. All of those are removed.
>>
>> Reviewers, please start with
>> - Header comments in archiveBuilder.hpp that describe the overall process of archive dumping
>> - `MetaspaceShared::initialize_for_static_dump()`
>> - `ArchiveBuilder::reserve_buffer()`
>> - Comments around `RelocateBufferToRequested` in archiveBuilder.cpp
>
> Ioi Lam has updated the pull request incrementally with one additional commit since the last revision:
>
> @calvinccheung and @tstuefe comments
Looks good. Some questions though.
src/hotspot/share/memory/archiveBuilder.hpp line 208:
> 206:
> 207: // For global access.
> 208: static ArchiveBuilder* _current;
This is kind of a strange concept since ArchiveBuilder is a StackObj. Maybe it should just be static if only one thread uses it at a time?
-------------
Marked as reviewed by coleenp (Reviewer).
PR: https://git.openjdk.java.net/jdk/pull/2296
More information about the hotspot-runtime-dev
mailing list