我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:彩库宝典 > 冻结标记 >

Java 12 特性冻结但原始字符串字面量特性被移除

归档日期:04-17       文本归类:冻结标记      文章编辑:爱尚语录

  JDK 12 是 Java SE 的下一个版本,已经到了版本发布流程的第一个减速点(ramp-down point),该版本的特性已被冻结。 JDK 12 提供了增强的 switch 语句的预览,为 G1 垃圾回收器添加了许多改进,并新引入了一个名为 Shenandoah 的实验性垃圾回收器。

  我们当然感到失望,因为这意味着这个特性需要更长一点时间才能变成 Java 语言的一部分,但我们认为这是最佳选择。

  虽然我们可以预料到,任何语言特性都会收到大量诸如“我更希望它不是这样的”的反馈,在我们审查收到的反馈时,我不再确信我们在复杂性和表现力(expressiveness)之间作出了正确的权衡,或者说我不确信我们已经对所有可能的设计进行了足够的探索,以确保当前的方案是我们能做出的最优方案。 通过移除这个特性,我们可以继续完善设计,探索更多选项,以便可以提供一个能满足预览特性流程(Preview Feature process,JEP 12)要求的预览。

  JDK 12 还对 G1 垃圾回收器进行了一些重要的增强。 G1 的目标之一是当回收器造成停顿时,能达到用户指定的停顿时间目标。但在某些情况下,回收器可能无法达到这个目标。 发生这种情况是因为 G1 使用一组启发式算法来选择在收集期间要做的工作,这些工作被称为收集集合(collection set)。目前,G1 需要从所有收集集合区域中收集所有活动对象,并且在此过程中不能停止。 因此,如果回收器的启发式算法选择了过大的收集集合,回收器可能会超出暂停目标。选择过大的收集集合这种情况是可能发生的,比如应用程序行为发生了改变而启发式算法仍然工作在“旧”数据上。

  由于 G1 尽量避免完整的 GC,并且仅基于 Java 堆占用和分配活动来触发并发周期,因此在许多情况下,除非从外部强制执行,否则它不会返还 Java 堆内存。

  Shenandoah 由 Red Hat 开发。 它是一个标记 / 复制回收器,在许多方面与 G1 类似。 主要区别在于回收器在转移阶段使用 Brooks 前向(forwarding)指针。 其想法是堆上的每个对象都有一个额外的引用字段。 该字段初始时指向对象本身,一旦对象被复制到新位置,它就指向新位置。 这使得它可以在应用线程执行的同时转移对象。

  JEP 341:类数据共享(Class Data-Sharing,CDS)是一项减少启动时间的特性。JEP 提到,由于共享,运行 HelloWorld 的启动时间缩短了 32%。但是,若想利用类数据共享,用户必须额外运行一步 java -Xshare:dump,即使使用 JDK 中默认提供的类也不例外。使用该 JEP,默认将生成类数据共享存档。

本文链接:http://dalezaragoza.com/dongjiebiaoji/32.html

上一篇:阿mo一点通:冻结窗格快速查看Excel内容

下一篇:没有了