-XX: UseG1GC 是 -Xincgc 的正确替代品吗?

新手上路,请多包涵

目前,我们通过将 -Xincgc 添加到 java 命令来使用增量垃圾收集器。在 JDK 8 中,此开关已弃用。那么它的等效替代品是什么? -XX:+UseG1GC

背景:该应用程序有一个 8GB 的堆,并创建了很多短暂的生命对象。我注意到它经常暂停几秒钟来进行垃圾收集。出于好奇,我添加了 -Xincgc ,发现停顿消失了,整体性能提高了约 4 倍。

不幸的是,我没有找到任何关于 -Xincgc 触发的垃圾收集器类型的信息。有 CMS (并发标记和清除)和新的 G1 (垃圾优先)。但是我得到了什么 -Xincgc

原文由 BetaRide 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1k
1 个回答

对于 Oracle/OpenJDK 8,大多数机器上的默认收集器是并行吞吐量收集器,除了一些 32 位 Windows 机器,它可以是串行 GC。

Xincgc是增量模式的CMS。您看到的主要好处可能是从吞吐量收集器切换到 CMS,而不是从专为单核 CPU 设计的增量模式。

增量模式也已弃用,因此只需通过 -XX:+UseConcMarkSweepGC 启用 CMS,看看它是否适合你。 更新:CMS 也已弃用,然后在以后的 OpenJDK 版本中删除

当然你也可以试试 G1GC,它也是为了达到低暂停时间目标而设计的,它的优点是它不会像 CMS 那样遭受碎片,因此不太可能遇到导致单线程停止的并发模式故障世界收藏。 更新:除了 G1GC 之外,较新的 OpenJDK 版本还提供额外的低暂停时间收集器)因此,请同时尝试并进行测量。

另请参阅: Oracle 的 Java 8 GC 调优指南

原文由 the8472 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题