jdk8 内存调优并发标记-清除 gc 暂停问题

jdk8 memory tuning with concurrent mark-sweep gc pause issue

我们从 JVM 的设置开始(我继承了它,除了尝试增量模式外没有修改它)...

-XX:+UseConcMarkSweepGC
-XX:ParallelGCThreads=1

我们在两个虚拟 CPU 上。我想要更多的 gc 暂停或其他什么,而不是落后于停止世界的暂停。据说 CMSIncrementalMode 已被弃用,尽管我还是尝试了它但它没有用。

我正在努力工作 https://docs.oracle.com/javase/8/docs/technotes/guides/vm/gctuning/cms.html

我无法理解占空比是什么意思。我只是想要更多的停顿而不是大停顿。我如何调整命令来执行此操作?

尽管文档说明了这一点 "Note that the incremental mode is being deprecated in Java SE 8 and may be removed in a future major release",但如果我现在需要的话,我不介意使用增量。

关于如何配置它或占空比是什么意思的任何想法?

注意:我们每两周部署一次,所以即使在部署之后,我也不希望随着节奏的调整而出现大的 gc 暂停。

谢谢, 院长

如果您使用 G1GC,那么您可以使用 XX:MaxGCPauseMillis 并设置一个较低的值(如果默认值不适合您)。