让 ZGC 经常运行

问题描述

ZGC 运行不够频繁。 GC 日志显示它为我的应用程序每 2-3 分钟运行一次,因此,我的内存使用率在 GC 周期之间变得很高(高达 90%)。 GC 后,它下降到低至 20%。

如何提高 GC 运行的频率以更频繁地运行?

解决方法

-XX:ZCollectionInterval=N - 将集合之间的最大间隔设置为 N 秒。
-XX:ZUncommitDelay=M - 将未使用的内存返回给操作系统的延迟设置为 M 秒。

,

在调整 GC 之前,我建议调查发生这种情况的原因。您的应用程序中可能存在一些问题/错误。

[关于 GC 的一些注意事项]

  • -XX:ZUncommitDelay=M(检查您的 linux 内核是否支持)
  • -XX:+ZProactive:在使用 ZGC 时启用主动 GC 周期。默认情况下,启用此选项。如果预计 ZGC 对正在运行的应用程序的影响最小,则 ZGC 将启动主动 GC 周期。如果应用程序大部分时间处于空闲状态或分配的对象很少,但您仍然希望减小堆大小并允许引用处理发生时,即使堆上有大量可用空间,这也很有用。

有关 ZGC 配置的更多详细信息。可以找到选项:

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...