第 4 章 Shenandoah 垃圾收集器的基本配置选项


Shenandoah 垃圾收集器(GC)具有以下基本配置选项:

-Xlog:gc
打印单个 GC 时间。
-Xlog:gc+ergo
打印 Heuristics 决策,如果出现任何情况,则可能会发现问题。
-Xlog:gc+stats

在运行结束时打印 Shenandoah 内部计时的摘要表。

最好在启用了日志记录后运行此操作。此概述表传达有关 GC 性能的重要信息。Heuristics 日志对找出 GC outliers 非常有用。

-XX:+AlwaysPreTouch
将堆页面提交成内存,并有助于降低延迟 hiccups。
-Xms-Xmx
使用 -Xms = -Xmx 使堆不可调整大小,从而减少了堆管理困难。与 AlwaysPreTouch 一起,-Xms = -Xmx 会在启动时提交所有内存,这样可避免最终使用内存时比较困难。-Xms 还定义了内存 uncommit 的低边界,因此 -Xms = -Xmx 所有内存都保持提交。如果要为较小的空间配置 Shenandoah,则建议设置 lower -Xms。您需要决定设置它以平衡提交/未提交开销与内存占用量的低程度。在很多情况下,您可以设置 -Xms 任意低。
-XX:+UseLargePages
启用 hugetlbfs Linux 支持。
-XX:+UseTransparentHugePages
透明地启用巨页。使用透明大内存页时,建议将 /sys/kernel/mm/transparent_hugepage/enabled/sys/kernel/mm/transparent_hugepage/defrag 设置为 madvise。使用 AlwaysPreTouch 运行时,它还将在启动时支付有问题的工具成本。
-XX:+UseNUMA
虽然 Shenandoah 尚不明确支持 NUMA,但最好启用对多套接字主机的 NUMA 交集。与 AlwaysPreTouch 相结合,它提供了优于默认的开箱即用配置的性能。
-XX:-UseBiasedLocking
非连续(双插槽)锁定吞吐量之间有一个利弊,而安全点 JVM 则用于启用和禁用它们。对于面向延迟的工作负载,请关闭计费锁定。
-XX:+DisableExplicitGC
从用户代码调用 system.gc ()会强制 Shenandoah 执行额外的 GC 周期。它通常不会损害,因为 -XX:+ExplicitGCInvokesConcurrent 会被默认启用,这意味着会调用并发 GC 周期,而不是 STW Full GC。

更新于 2024-05-10

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.