Pre-RFR 8236847 CDS archive with 4K alignment unusable on machines with 64k pages

Dmitry Samersoff dms at
Thu Jan 30 08:34:53 UTC 2020

Hello Ioi,

I'm not sure that explicit specification of SharedRegionAlignment=64k 
helps.  The goal is to build JDK on a build machine then use it smoothly 
on different test/production machines with both 4k and 64k pages, ever 
if it's the same JDK that resides in a shared network location.

For a long term we may consider to revisit entire logic of default 
archive dumping and dump CDS archive of JDK classes on the first JVM run 
to $HOME/.cache but it requires more work and is out of scope of this issue.

So as a short term solution I would propose to implement following logic:

1. Without any parameters

     - try to use existing CDS archive

    - if alignment doesn't match - disable CDS and continue execution.

         - if debug or fastdebug  - issue a meaningful warning.

2. With explicit -Xshare:auto or -Xshare:on

     - try to use existing CDS archive

     - if alignment doesn't match - terminate VM with meaningful message.


On 29.01.20 08:37, Ioi Lam wrote:
> Hi Dmitry,
> Here's a proposal to make it possible to generate CDS archives that 
> can be used on machines with different OS page alignments: generate 
> the CDS archive with
>      java -Xshare:dump -XX:SharedRegionAlignment=64k
> I want to be conservative, as this seems to affect only Linux/aarch64, 
> so I have limited the range of this flag to be no more than 64KB. You 
> can see checks for other invalid values in the new test case.
> If SharedRegionAlignment is not specified (as for most platforms), 
> os::vm_allocation_granularity() will be used.
> For simplicity, -XX:SharedRegionAlignment can only be set when dumping 
> the base archive (-Xshare:dump). The dynamic archive 
> (-XX:DynamicDumpSharedSpaces) will always use the value as stored in 
> the base archive.
> Please let me know if this solution will work for your situation. If 
> so, I will file a CSR for the new flag and also write more test cases.
> (Also, the default CDS archive is created at JDK build time. I'll 
> leave it to the ARM porting folks to do the makefile changes to pass the
> -XX:SharedRegionAlignment=64k flag to BUILD_CDS_ARCHIVE in Images.gmk)
> Thanks
> - Ioi

More information about the hotspot-runtime-dev mailing list