Shenandoah:Java 12中的超低暂停垃圾收集器

既然Java SE 12就在这里 ,是时候继续研究最新的功能和变化了。 特别是一项新的增强功能立即引起了我们的注意。 JEP 189:Shenandoah是一个实验性的,低暂停时间的垃圾回收器,主要针对大型堆应用程序。

它的算法最初由Red Hat于2016年发布 。 它的目标和功能是什么?

暂停时间短

OpenJDK Wiki

“ Shenandoah是一个超低的暂停时间垃圾收集器,它通过与正在运行的Java程序同时执行更多的垃圾收集工作来减少GC的暂停时间。 CMS和G1都同时执行活动对象的标记。 Shenandoah增加了并发压缩。”

还请参见: Java编程噩梦初学者指南

根据Red Hat的说法,暂停时间不再与堆的大小成正比。 从理论上讲,这意味着2 GB的堆将具有与200 GB的堆相同的暂停时间。 我们不必再告诉您这是一项严肃的事情。 垃圾回收暂停使许多用户感到沮丧,这项新的增强功能可能会改变一些开发人员使用JDK的方式。

非目标和用例

提醒您,解决所有暂停问题是非目标:“目标不是解决所有JVM暂停问题。 由于GC之外的其他原因(如安全点时间(TTSP)问题或监视通货膨胀)而导致的暂停时间不在本JEP的范围内。”

您的堆大小也会影响性能。 在Shenandoah上的测试是在较大的堆大小(从4到128 GB)上完成的。 建议您将它们用于这些大尺寸。 如果堆大小较小,则可能不是适合您的GC。

如果GC暂停不在您的问题清单之列,那么该GC也不适合您,您可以继续使用一种更适合您的特定用例的方法。 GC并不适合所有人的需求,这取决于您自己确定用例和权衡因素。

好消息是,即使Shenandoah不适合您,Java 12的增强功能还包括对G1垃圾收集器( JEP 344JEP 346 )的改进。 这些功能包括可中止的混合集合和一项增强功能,该功能允许G1 GC在空闲时自动将Java堆内存返回给OS。

还请参见: Java 12:“开关表达式使开发人员有机会清理一些庞大的开关语句和复杂的if-then-else块”

更多资源

  • 请查看其Wiki,以获取更多信息以及如何报告潜在的错误。
  • Shenandoah的作者之一,Roman Kennke,偶尔会写有关该主题的博客。 探索标签

想自己使用吗? 请注意: OracleJDK不包括Shenandoah 。 目前,我们还没有关于将来是否会改变的消息。

对于其他每个版本,请遵循Wiki上有关如何安装和运行的说明。 OpenJDK说:“这不是统治所有规则的一个GC”。 但是,对于JDK和受欢迎的JEP而言,无疑是一个巨大的进步。 Java 12的增强功能看起来很棒!

翻译自: https://jaxenter.com/java-garbage-collection-157057.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值