-
CSR
-
Resolution: Approved
-
P3
-
behavioral
-
minimal
-
Some script may assume that the CDS archive is not used even if it's present inside the JDK. However, there will be no behavioral differences at the Java language level whether CDS is used or not.
-
add/remove/modify command line option
-
Implementation
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:
- If the
-XX:SharedArchiveFile=<file>
option is specified, and<file>
exists, the JVM will attempt to map<file>
as the CDS archive, as if-Xshare:auto
had been specified. - If the
-XX:SharedArchiveFile
option is not specified, the VM will attempt to map the default CDS archive ($JAVA_HOME/lib/server/classes.jsa
), as if-Xshare:auto
had been specified.
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.
- csr of
-
JDK-8188105 Make -Xshare:auto the default for server VM
-
- Resolved
-