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

论坛 期权论坛 脚本     
匿名技术用户   2021-1-9 08:39   647   0

shenandoah垃圾

既然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

shenandoah垃圾

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:7942463
帖子:1588486
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP