Loading... (original) (raw)

Summary

Currently the default class data sharing (CDS) setting for Server VM is -Xshare:off. Change the default to -Xshare:auto to make it easier to use CDS.

Problem

We expect CDS to be widely used with the Server VM. However, the current default CDS setting for Server VM is -Xshare:off. This makes it cumbersome to use CDS.

Solution

Change the default to -Xshare:auto, so as long as a CDS archive exists in the JDK, CDS will be automatically used without specifying extra flags.

In JDK 8 and before, RewriteBytecodes was disabled when CDS was enabled. This caused performance degradation in the Server Compiler (aka C2). However this has been fixed in JDK-8074345 since JDK 9, so there's no longer need to disable CDS by default with the Server VM.

Specification

For the Server VM, if the -Xshare option is not explicitly specified in the command-line:

Note: no user visible changes are needed in the -help output because the current output for the server VM already says (incorrectly)

    -Xshare:auto      use shared class data if possible (default)
    -Xshare:off       do not attempt to use shared class data
    -Xshare:on        require using shared class data, otherwise fail.

so in a way we are just changing the implementation to match the documentation.