For investors
股价:
5.36 美元 %For investors
股价:
5.36 美元 %认真做教育 专心促就业
随着互联网的不断发展,软件编程开发语言也有了多次的更新与升级,而今天我们就通过案例分析来了解和学习一下,java12都有哪些新特性。
Switch Expressions 或者说起相关的 Pattern Matching 特性,为我们提供了勾勒出了 Java 语法进化的一个趋势,将开发者从复杂繁琐的低层次抽象中逐渐解放出来,以更高层次更优雅的抽象,既降低代码量,又避免意外编程错误的出现,进而提高代码质量和开发效率。
则是很有现实意义度 Shenandoah GC。它是 Redhat 主导开发的 Pauseless GC 实现,从大概 2013 年开始研发,终于取得了重要的阶段性成果,与其他 Pauseless GC 类似,Shenandoah GC 主要目标是 99.9% 的暂停小于 10ms,暂停与堆大小无关等。
也许了解 Shenandoah GC 的人比较少,业界声音比较响亮的是 Oracle 在 JDK11 中开源出来的 ZGC,或者商业版本的 Azul C4(Continuously Concurrent Compacting Collector)。但是,笔者认为,至少目前,其实际意义大于后两者,因为:
使用 ZGC 的低门槛是升级到 JDK11,对很多团队来说,这种版本的跳跃并不是非常低成本的事情,更何况是尚不清楚 ZGC 在自身业务场景中的实际表现如何。
而 C4,毕竟是土豪们的选择,现实情况是,有多少公司连个几十块钱的 License 都不舍得…
而 Shenandoah GC 可是有稳定的 JDK8u 版本发布的哦,据我所知已经有个别公司在 HBase 等高实时性产品中实践许久。
从原理的角度,我们可以参考该项目官方的示意图,其内存结构与 G1 非常相似,都是将内存划分为类似棋盘的 region。整体流程与 G1 也是比较相似的,大的区别在于实现了并发的 Evacuation 环节,引入的 Brooks Forwarding Pointer 技术使得 GC 在移动对象时,对象引用仍然可以访问。
【免责声明】:本内容转载于网络,转载目的在于传递信息。文章内容为作者个人意见,本平台对文中陈述、观点保持中立,不对所包含内容的准确性、可靠性与完整性提供形式地保证。请读者仅作参考。