【发布时间】:2022-02-18 23:54:39
【问题描述】:
“Java 平台,标准版 HotSpot 虚拟机垃圾收集调优指南”,解释 its figure 1-1 如下所示
红线是一个应用程序在单处理器系统上仅花费 1% 的时间进行垃圾收集。这意味着在具有 32 个处理器的系统上,吞吐量损失超过 20%。
我不明白这些数字的真正含义。
是不是说,在gc时间固定的情况下,GC会因为暂停而影响CPU的吞吐量?
【问题讨论】:
-
您有相关文档部分的链接吗?
-
是不是说,在gc时间固定的情况下,GC因为暂停而影响CPU的吞吐量?是的。随着处理器数量的增加,1% 的 GC 时间相当于 32 个 CPU 上 30% 的时钟时间。而 30% 的 GC 导致几乎 100% 的时间花在 GC 上。基本上,这是对阿姆达尔定律的重新陈述。
-
基本上我在问,因为您的问题中没有足够的信息来确定答案。我认为引用是指旧的 stop-the-world mark-and-sweep GC,但我无法确定。
-
@markspace 感谢您的帮助。我在docs.oracle.com/javase/10/gctuning/…看到它
-
@Elliott Frisch 感谢您的评论。但我还是不明白,这是否意味着处理器越少吞吐量越好?我是这么想的,因为当我们只看到红线时,它表明处理器小于 5 时比处理器编号为 32 时的吞吐量更好。