java 9 10 11 12 13新特性,这里为你总结全了( 二 )


8. 根证书颁发认证
这将使OpenJDK对开发人员更具吸引力,它还旨在减少OpenJDK和Oracle JDK构建之间的差异 。
9. 将JDK生态整合单个存储库(JEP 296)
此JEP的主要目标是执行一些内存管理,并将JDK生态的众多存储库组合到一个存储库中 。
10. 删除工具javah(JEP 313)
从JDK中移除了javah工具,这个很简单并且很重要 。
Java 10尝鲜
就像所有其他JDK版本一样,Oracle已经发布了一个Java 10初始候选版本,Java开发者可以下载此版本用来测试新功能 。如果你对Java 10抱有期待想提早尝试,那么现在就开始吧!
11.Optional类
Optional类添加了新的方法orElseThrow(无参数版) 。相比于已经存在的get方法,这个方法更推荐使用 。
Java 11 新特性

  1. 支持Unicode 10.0,在jdk10中是8.0 。
  2. 标准化HTTP Client
  3. 编译器线程的延迟分配 。添加了新的命令-XX:+UseDynamicNumberOfCompilerThreads动态控制编译器线程的数量 。
  4. 新的垃圾收集器—ZGC 。一种可伸缩的低延迟垃圾收集器(实验性) 。
  5. Epsilon 。一款新的实验性无操作垃圾收集器 。Epsilon GC 只负责内存分配,不实现任何内存回收机制 。这对于性能测试非常有用,可用于与其他GC对比成本和收益 。
  6. Lambda参数的局部变量语法 。java10中引入的var字段得到了增强,现在可以用在lambda表达式的声明中 。如果lambda表达式的其中一个形式参数使用了var,那所有的参数都必须使用var 。
Java 12 新特性Shenandoah:一个低停顿垃圾收集器(实验阶段)
Java 12 中引入一个新的垃圾收集器:Shenandoah,它是作为一中低停顿时间的垃圾收集器而引入到 Java 12 中的,其工作原理是通过与 Java 应用程序中的执行线程同时运行,用以执行其垃圾收集、内存回收任务,通过这种运行方式,给虚拟机带来短暂的停顿时间 。
Shenandoah 垃圾回收器是 Red Hat 在 2014 年宣布进行的一项垃圾收集器研究项目,旨在针对 JVM 上的内存收回实现低停顿的需求 。该设计将与应用程序线程并发,通过交换 CPU 并发周期和空间以改善停顿时间,使得垃圾回收器执行线程能够在 Java 线程运行时进行堆压缩,并且标记和整理能够同时进行,因此避免了在大多数 JVM 垃圾收集器中所遇到的问题 。
据 Red Hat 研发 Shenandoah 团队对外宣称,Shenandoah 垃圾回收器的暂停时间与堆大小无关,这意味着无论将堆设置为 200 MB 还是 200 GB,都将拥有一致的系统暂停时间,不过实际使用性能将取决于实际工作堆的大小和工作负载 。
图 1. Shenandoah GC 工作周期如下所示
java 9 10 11 12 13新特性,这里为你总结全了

文章插图
Shenandoah GC
上图对应工作周期如下:
  1. Init Mark 启动并发标记 阶段
  2. 并发标记遍历堆阶段
  3. 并发标记完成阶段
  4. 并发整理回收无活动区域阶段
  5. 并发 Evacuation 整理内存区域阶段
  6. Init Update Refs 更新引用初始化 阶段
  7. 并发更新引用阶段
  8. Final Update Refs 完成引用更新阶段
  9. 并发回收无引用区域阶段
需要了解不是唯有 GC 停顿可能导致常规应用程序响应时间比较长 。具有较长的 GC 停顿时间会导致系统响应慢的问题,但响应时间慢并非一定是 GC 停顿时间长导致的,队列延迟、网络延迟、其他依赖服务延迟和操作提供调度程序抖动等都可能导致响应变慢 。使用 Shenandoah 时需要全面了解系统运行情况,综合分析系统响应时间 。各种 GC 工作负载对比如下所示:
java 9 10 11 12 13新特性,这里为你总结全了

文章插图
图 2. 各种 GC 工作负载对比
下面推荐几个配置或调试 Shenandoah 的 JVM 参数: