ZGC运行得不够频繁。GC日志显示,它每2-3分钟为我的应用程序运行一次,因此,在GC循环之间,我的内存使用率很高(高达90%)。GC后降至20%。
如何提高GC运行频率,使运行频率更高?
发布于 2021-07-10 07:41:06
-XX:ZCollectionInterval=N -将集合之间的最大间隔设置为N秒。
-XX:ZUncommitDelay=M -将延迟设置为M秒,直到未使用的内存返回到操作系统。
发布于 2021-07-14 06:46:12
发布于 2021-09-02 10:05:46
目前( JDK 17),ZGC的主要策略是等待堆填充的最后一刻,然后进行收集。它的目标是
它通过测量应用程序分配内存的速度、GC运行所需的时间以及预测应该在什么时候启动GC来实现这一点。您可以在源代码中找到确切的算法。
ZGC还公开了一些用于更频繁地运行GC的旋钮(即主动操作),但老实说,我并不认为它们非常有效。您可以在我的其他答案中找到更多的信息。G1在积极主动方面做得更好,但这是否好取决于您的用例。(听起来您更关心吞吐量而不是内存使用,所以我认为您应该更喜欢ZGC的行为。)
但是,,,如果您发现ZGC在预测堆什么时候会填满,并且您的应用程序真的处于停滞状态时,请在这里或在ZGC邮件列表中共享这些信息。
https://stackoverflow.com/questions/68322932
复制相似问题