Java HotSpot(TM)客户端共享与不共享

ima*_*est 13 java

我正在查看我的JDK安装,我发现两个安装之间存在差异:

java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) Client VM (build 25.121-b13, mixed mode)
Run Code Online (Sandbox Code Playgroud)

VS

java version "1.8.0_121"
Java(TM) SE Runtime Environment (build 1.8.0_121-b13)
Java HotSpot(TM) Client VM (build 25.121-b13, mixed mode, sharing)
Run Code Online (Sandbox Code Playgroud)

我想知道sharingnot sharing国家之间的区别是什么.

除了"速度差异"之外,我找不到一个好的答案,但没有解释为什么/这是什么.

Eug*_*ene 2

这就是所谓的Class Data Sharing,如此处所述这仅适用Client VM.

基本上,这是一种加快 VM 启动时间的方法 - 解析的类存储在一个文件中,当 VM 启动时,它只读取该文件(包含已编译的类),它也可以与其他正在运行的虚拟机。

构建shared将包含一个文件jre\bin\client\classes.jsa,而另一个则不包含。

从 java-8 开始,您可以将自己的类添加到该文件中 - 如果我没记错的话,并且本机代码(而不是字节代码)将在那里供您获取。

我还没有使用具有此支持的客户端虚拟机 - 只需阅读相关内容。