带有差异的JVM 10规范?

时间:2018-03-24 00:24:33

标签: java jvm specifications java-10

有没有人知道是否有Java 10和JVM 10规范的版本,以及之前版本的差异?对于Java 8和Java 9,有一些带有差异的规范,并且很难看出其他的确切变化。

2 个答案:

答案 0 :(得分:8)

对于Java 9和Java 10(18.3)之间的差异,您可以下载" JSR-000383 Java SE 10(18.3)最终版本附件3以进行评估"通过以下链接:

请注意,您必须接受软件许可协议才能下载。

此档案包含JLS和JVMS的差异。

答案 1 :(得分:1)

我知道Java 10有什么新功能,让我们简单地快速浏览一下。

1。局部变量类型推断(JEP 286)     与JavaScript,Kotlin和Scala相似,现在Java也将具有var关键字,该关键字使您可以在不指定其类型的情况下声明局部变量     例如:     var name =“ Java”

2。垃圾收集器接口(JEP 304)     它增加了不同垃圾收集器的代码隔离度,并为它们提供了一个干净的接口,这意味着更容易从JDK构建中排除GC,同时还可以更轻松地添加新的GC而不会影响代码库。

3。适用于G1的并行完整GC(JEP 307)     它通过使完整的GC并行化来提高G1最坏情况的延迟。如果您还记得Java 9的发行版,则将G1设置为JVM的默认GC,该JVM旨在避免使用完整的GC。但是,当并发集合无法足够快地回收内存时,它最终会退回到完整的GC上,从而产生了问题。此更改将并行化完整的GC算法,因此在不太可能的情况下发生G1完整GC可以使用与并发集合中相同数量的线程,以提高整体性能。

4。替代存储设备上的堆分配(JEP 316)     它使HotSpot VM可以在用户指定的备用存储设备上分配Java对象堆,例如,此功能使分配较低优先级的进程以使用NV-DIMM内存成为可能,而仅分配较高优先级在多JVM环境中处理到DRAM。

5。将JDK森林整合到一个存储库中(JEP 296)     它将把JDK林的众多存储库合并到一个存储库中。

6。基于Java的实验性JIT编译器(JEP 317)     使基于Java的JIT编译器Graal可以在Linux / x64平台上用作实验性JIT编译器。如果您还记得,Java 9中已经添加了Graal,但是现在您可以使用以下JVM参数启用它:

-XX:+UnlockExperimentalVMOptions -XX:+UseJVMCICompiler

7。线程本地握手(JEP 312)      通过无需执行全局VM保存点就可以在应用程序线程上执行回调来提高VM性能。这意味着JVM可以停止单个线程,而不仅仅是所有线程。

8。删除本机头生成工具(JEP 313)     它将从JDK中删除javah工具,这是一个单独的工具,可在编译JNI代码时生成头文件,因为这可以通过javac完成。

来源/信用:Java 10 Features