识别G1混合回收触发点最可靠的方式是查看日志中是否出现“Mixed GC”字样及配套并发标记标识;ZGC和Shenandoah则分别通过“Concurrent Mark Cycle Complete”或“Concurrent evacuation”标志标记完成。

直接看日志中是否出现 “Mixed GC” 字样及配套的并发标记阶段标识,是识别G1混合回收触发点最可靠的方式。ZGC和Shenandoah虽无“Mixed GC”概念,但其并发标记完成事件(如 Concurrent Mark Cycle Complete)同样标志着高并发回收流程进入关键节点。
关注G1日志中的Mixed GC明确标识
G1的混合回收不是独立触发的,而是YGC后自动衔接并发标记,并在满足条件时启动Mixed GC。日志中一旦出现以下组合,即为明确触发信号:
- 某次YGC日志末尾紧跟着 [GC pause (G1 Evacuation Pause) (mixed)] 或类似字段
- 或在YGC之后、Full GC之前,出现独立的 [GC pause (G1 Mixed GC)] 记录
- 伴随该记录的,通常有 [Eden: ...][Survivors: ...][Old: ...] 区域级内存变化,且Old区域有明显释放量
定位并发标记起始与完成的关键日志线索
并发标记本身不暂停应用,但它的开始与结束会留下可追踪痕迹。重点查找:
- [GC concurrent-root-region-scan-start]:表示Mixed GC的初始标记已结束,正式进入并发扫描阶段
- [GC concurrent-mark-start] 和 [GC concurrent-mark-end]:标记并发遍历全过程,耗时长说明老年代引用关系复杂
- [GC remark](最终标记):STW阶段,标志并发标记收尾,紧接着就是Mixed GC的垃圾回收阶段
结合RSet更新与Humongous对象日志交叉验证
混合回收常因跨代引用压力或巨型对象堆积而提前触发。若日志中同时出现以下内容,说明Mixed GC被“加速”调用:
- 频繁的 [GC concurrent-cleanup-start] 或 [GC ref-proc],反映RSet写屏障开销大,系统主动推进混合回收
- 存在 Humongous allocation 或 Humongous regions reclaimed,表明巨型对象占满连续Region,迫使G1提前清理老年代空间
- 日志中出现 [G1Ergonomics (Mixed GCs) add old region to collection set],即G1动态决策将老年代Region加入回收集
区分ZGC/Shenandoah的并发周期完成点
这两款低延迟收集器没有“混合”概念,但其并发标记完成是后续回收动作的前提:
- ZGC日志中查找 "Concurrent Mark Cycle Complete",之后立即跟 "Relocation Set Selection",即进入实际回收
- Shenandoah日志中匹配 "Concurrent evacuation" 或 "Concurrent cleanup" 阶段起始,代表标记已就绪并开始移动/清理
- 二者均会在JDK日志中显示 "Using Shenandoah" / "Using ZGC" 开头的启动信息,确保你分析的是对应收集器日志

















