2 回答
TA贡献1909条经验 获得超7个赞
我相信这是 G1 中的 Full GC 操作。JDK 10之前是串行的,JEP 307集成后现在是并行的。从这些阶段的持续时间也可以看出这一点:与常规 G1 周期相比,几乎是 4 秒。
看到源:G1全GC使用的SerialOldTracer
报告,现在它使用G1FullTracer
。因此,在 JDK 10 之前,它会为 Full GC 报告“SerialOld”,现在它应该报告“G1Full”。
TA贡献1828条经验 获得超4个赞
如前所述,这与 Full GC 相关,但对于不熟悉该概念的任何人,我将尝试澄清:
Full GC 仅在 G1GC 以某种方式无法跟上,或者某事/某人明确要求时才会发生。您现在可以紧急回退到经典的 stop-the-world 垃圾收集,而不是短(亚秒)大部分并发垃圾收集,这可能需要几秒钟(取决于堆使用情况)。
要确定导致 Full GC 的原因,您(或处于相同情况的其他任何人)可能需要启用 GC 日志记录。(例如:-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:<file-path>
在 Java 9 之前和 Java 9 之前:)-Xlog:gc*:file=<file-path>
。如果您确实确保将 GC 日志写入快速存储,请参阅:https : //engineering.linkedin.com/blog/2016/02/elimination-large-jvm-gc-pauses-caused-by-background-io-交通
添加回答
举报