jdk12和jdk1.8的区别
jdk12和jdk1.8的区别分别是:
1、jdk12是:新增了一个名为 Shenandoah 的 GC 算法,通过与正在运行的 Java 线程同时进行 evacuation 工作来减少 GC 暂停时间。
扩展了 switch 语句,使其不仅可以作为语句,还可以作为表达式并且针对 64 位平台,使用默认类列表增强 JDK 构建过程以生成类数据共享档。
如果 G1 Mixed GC 存在超出暂停目标的可能性,则使其可中止。增强 G1 GC,在空闲时自动将 Java 堆内存返回给操作系统。
2、jdk1.8是:Java1.8允许我们给接口添加一个非抽象的方法实现,只需要使用 default关键字即可,这个特征又叫作扩展方法。
Lambda 表达式:例如: (x, y) -> { return x + y; } ;λ表达式有三部分组成:参数列表,箭头->),以及一个表达式或语句块。
hashmap和currenthashmap的红黑树以及cas。
jdk10的特性是:
局部变量类型推断:var并且线程本地握手JDK 10将引入一种在线程上执行回调的新方法,因此这将会很方便能停止单个线程而不是停止全部线程或者一个都不停。
备用内存设备上的堆分配,允许HotSpot VM在备用内存设备上分配Java对象堆内存,该内存设备将由用户指定。
其他Unicode语言 - 标记扩展,目标是增强java.util.Locale及其相关的API,以便实现语言标记语法的其他Unicode扩展(BCP 47)。
基于Java的实验性JIT编译器Oracle希望将其Java JIT编译器Graal用作Linux / x64平台上的实验性JIT编译器。