目前,我们正在通过将-Xincgc添加到java命令来使用增量垃圾收集器。在JDK 8中,这个开关是不推荐的。那么,它的等效替代品是什么呢?-XX:+UseG1GC
背景:应用程序有一个8GB堆,并创建了许多短活动对象。我注意到,它经常停顿几秒钟来进行垃圾收集。出于好奇,我添加了-Xincgc,发现暂停已经消失,总体性能提高了4倍。
不幸的是,我没有找到任何关于-Xincgc触发器的垃圾收集器类型的信息。有CMS (并发标记和扫描)和新的G1 (垃圾优先)。但我能从-Xincgc那里得到什么
发布于 2015-11-25 14:44:42
对于Oracle/OpenJDK 8,大多数机器上的默认收集器是并行吞吐量收集器,除了一些32位窗口机器外,它可以是Serial。
Xincgc是增量模式下的CMS。您所看到的主要好处可能是从吞吐量收集器切换到CMS,而不是从专为单核CPU设计的增量模式。
增量模式也被废弃。,所以只需通过-XX:+UseConcMarkSweepGC启用CMS,看看这是否适用于您。更新:CMS也已被废弃,然后在以后的OpenJDK版本中被删除
当然,您也可以尝试G1GC,它的目的也是为了达到较低的暂停时间目标,并且它的优点是不像CMS那样受到碎片的影响,因此不太可能发生并发模式故障,从而导致单线程停止世界收集。Update:新的OpenJDK版本除了提供G1GC之外,还提供额外的低暂停时间收集器),所以,尝试两者并进行度量。
发布于 2016-11-22 17:57:41
直到Oracle在新版本中完全反对此选项为止。我们仍然可以使用它,方法是应用以下jvm params:
-XX:+UseConcMarkSweepGC -XX:+CMSIncrementalMode -XX:+PrintGCDetails -XX:+PrintGCTimeStamps后两个参数用于登录GC活动。
发布于 2022-03-06 21:35:32
在多处理器系统上出现症状,将Java虚拟机的垃圾收集器(GC)配置为使用并发标记扫描( CMS )“增量”模式将导致性能低于常规模式下的CMS。
不幸的是,当在Web上搜索Java调优页面时,有许多文档建议在增量模式下使用CMS,方法是设置一个命令行开关-XX:+CMSIncrementalMode或-Xincgc。
https://stackoverflow.com/questions/33919213
复制相似问题