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

时间:2017-08-08 09:25:19

标签: 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)

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)

我想知道sharingnot sharing状态之间的区别是什么。

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

1 个答案:

答案 0 :(得分:1)

这称为Class Data Sharing,如here所述; 仅适用于Client VM

基本上它是一种加速VM启动时间的方法 - 解析后的类存储在一个文件中,当VM启动时,它只读取该文件(已经编译过的类),它也可以与其他正在运行的VM共享。

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

从java-8开始,您可以将自己的类添加到该文件中 - 如果我没记错的话,本机代码(不是字节代码)将用于抓取。

我没有使用Client VM的支持 - 只需阅读它。