一个java程序正在使用JRE 10.0.2发出此警告:
Java HotSpot(TM) 64-Bit Server VM warning: Option UseConcMarkSweepGC was deprecated in version 9.0 and will likely be removed in a future release.
该交换机的推荐替代品是什么?
删除对CMS的支持,然后删除CMS代码,或者至少更彻底地隔离它,将减少GC代码库的维护负担并加速新的开发。从长远来看,G1垃圾收集器旨在取代CMS的大多数用途。
以下是in this blog给出的解决方案,如果您使用的是CMS算法:(1)。切换到G1 GC算法G1 GC已成为自Java 9以来的默认GC算法。因此,您可以考虑将应用程序移动到此算法。它可以提供比CMS GC算法更好的性能特征。调整起来要容易得多,因为参数数量相对较少。此外,它还提供了从内存中消除重复字符串的选项。如果您可以消除重复的字符串,它可以帮助您降低整体内存占用量。
(2)。切换到Z GC算法Z GC是一个可扩展的低延迟垃圾收集器。其目标是使GC暂停时间小于10毫秒。早期访问Z GC算法在java 11,12中可用。因此,如果您的应用程序在java 11,12上运行,您可以考虑升级到Z GC算法。我们对Z GC的初步分析显示了出色的结果。
(3)。继续使用CMS对于某些应用程序,我们已经看到CMS提供了壮观的结果,即使在经过大量调整后也无法与G1 GC匹配。因此,如果您已经探索了其他两个选项并且确信CMS算法是为您在天堂的应用程序而建立的结合:-),您可以考虑使用CMS算法本身运行。在这个OpenJDK JDK9-dev邮件列表中,甚至有争议继续使CMS保持活力。根据我的个人经验,我看到Java 1.1中不推荐使用的功能和API,即使在Java 12中也是如此(即使在20年后)。似乎所有已弃用的API和功能似乎都存在(并且永不消亡)。因此,继续在CMS上运行也是一种选择。当然,这是您的电话和您的应用程序利益相关者致电。