0

“总垃圾收集时间”可以通过观察命令打印的 GCT 列来确定:

jstat -gc <pid>

如此处文档所述:https ://docs.oracle.com/en/java/javase/12/tools/jstat.html

它似乎是自 Java 进程启动以来花费在 GC 上的时间,以秒为单位。

这是每个核心吗?那么,如果一个四核 CPU 被单个 JVM 实例充分利用了 100 秒,并且垃圾回收率为 10%,那么 GCT 会报告 10 还是 40?如果我启用了超线程(即 8 个操作系统内核),那么我应该如何推断 GCT 数字?

我正在使用 OpenJDK12 HotSpot JVM。

4

1 回答 1

2

GCT指标是特定于收集器的。每个 GC 算法都可以为GCT.

通常它是在stop-the-world GC 暂停中花费的总挂钟时间。特别是,对于 OpenJDK 12 中的默认收集器 G1,它是 Full GC 暂停 + 并发 GC 周期的 stop-the-world 阶段的总和。GCT

但是,对于 Shenandoah GCGCT也包括并发 GC 时间。在任何一种情况下,GCT都使用绝对(挂钟)计时器进行测量,而与线程或 CPU 内核的数量无关。

于 2019-08-01T22:22:21.497 回答