cms 并发标记_这是不进行并发标记扫描的方法

Java 9开始不推荐使用CMS并发标记扫描垃圾收集算法,这一变化旨在减少GC代码维护并促进新功能开发。启动应用时使用-XX:+ UseConcMarkSweepGC参数会收到弃用警告,提示该选项可能在后续版本中删除。

cms 并发标记

作为JEP-291的一部分,Java开发工具包9不赞成使用流行的并发标记扫描垃圾收集算法。该决定是为了减轻垃圾收集(GC)代码的维护负担并加速新开发。

结果,如果使用-XX:+ UseConcMarkSweepGC参数从Java 9或更高版本启动应用程序以激活并发标记扫描GC算法,则会看到以下警告:

Java HotSpot(TM)64位服务器VM警告:选项UseConcMarkSweepGC在9.0版中已弃用,在以后的版本中可能会删除。

为什么不赞成并发标记扫描?

如果要搬运很多行李,尤其是在Java代码中,那就很难前进了。 使用并发标记扫描,此功能正是导致其消失的原因。 它是一种高度可配置的复杂算法,并为Java开发工具包(JDK)中的GC代码库增加了许多复杂性。 但是,只有JDK开发团队可以简化GC代码库,才能在GC领域加速和创新。

让我们探索可以传递给每个GC算法的Java虚拟机(JVM)参数的数量,以证明它们的复杂性:

  • 所有人共同点:50
  • 平行:6
  • CMS:72
  • G1:26
  • ZGC:8

大约有50个与GC相关的参数可以传递给任何JVM 。 在这50个参数之上,仅CMS可以传递72个附加参数,这比任何其他GC算法都要多得多。 这种增加增加了JDK团队支持所有这些参数的编码复杂性。

如果当前使用CMS作为GC算法,您有什么选择?

三个最引人注目的选项是:

  1. 切换到G1 GC算法
  2. 切换到Z GC算法(JDK 11、12中的早期访问)
  3. 继续使用CMS,并处理弃用警告

切换到G1 GC算法

自Java 9以来,G1 GC已成为默认的GC算法 ,您可以放心地考虑将应用程序移至该算法。 与并发标记扫描相比,它可以提供更好的性能特征,并且由于包含更少的参数,因此更容易调整该算法。 此外,它提供了一些选项以从内存中消除重复的字符串。 如果可以消除这些重复的字符串,则可以帮助您减少总体内存占用。

切换到Z GC算法

Z GC是一种可伸缩的低延迟垃圾回收器,其主要目标是使GC暂停时间保持在10 ms以内。 Java 11和12中提供了对Z GC算法的早期访问,因此,如果您的应用程序在这些发行版之一上运行,则可以将其视为并发标记扫描。

继续进行并发标记扫描

对于某些应用程序,即使进行了大量调整,与G1 GC算法相比,并发Mark Sweet仍可提供更好的结果。 如果您已经探索了其他选择,并且发现并发标记扫描为您的应用程序提供了最佳结果,那么您应该坚持使用当前的GC算法。

在OpenJDK JDK9-dev邮件列表中已经有关于保持并发标记扫描有效的讨论,因此它可能不会永远消失。 二十年前在Java 1.1中不推荐使用的某些功能和API仍在当今的应用程序中使用,这意味着不推荐使用并不总是终结 。 您可以继续在“并发标记扫描”上运行,但是请注意,在将来的任何发行版中,它都可能被完全删除

请注意,每个应用程序都是独特且不同的,并且不会被谈论GC调整和调整的期刊和其他文献所迷惑。 当您测量新的GC设置时,应完成全面的测试,指定基准性能特征并研究关键性能指标以做出明智的决定。

翻译自: https://www.theserverside.com/blog/Coffee-Talk-Java-News-Stories-and-Opinions/Heres-how-to-get-by-without-Concurrent-Mark-Sweep

cms 并发标记

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值