我正在查看我的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)
我想知道sharing
和not sharing
状态之间的区别是什么。
除了"速度差异"之外,我找不到一个好的答案,但没有解释为什么/这是什么。
答案 0 :(得分:1)
这称为Class Data Sharing
,如here所述; 仅适用于Client VM
。
基本上它是一种加速VM启动时间的方法 - 解析后的类存储在一个文件中,当VM启动时,它只读取该文件(已经编译过的类),它也可以与其他正在运行的VM共享。
shared
版本将包含文件jre\bin\client\classes.jsa
,而另一个版本则不会。
从java-8开始,您可以将自己的类添加到该文件中 - 如果我没记错的话,本机代码(不是字节代码)将用于抓取。
我没有使用Client VM的支持 - 只需阅读它。