概念定义
追踪式回收必须看到一致的对象图,线程要在安全点停下供根扫描,压实式收集器还要挪对象。决定交互服务延迟地板的是停顿分布,不是平均值。
工作机制
年轻代收集在空间间拷贝幸存者,停顿与存活对象量成正比。并发老年代收集器边跑边标记,只在再标记与搬迁时短暂停顿:ZGC 与 Shenandoah 在大堆上瞄准亚毫秒停顿,代价是 CPU 开销。Go 把每周期 STW 压进两个极窄窗口,并按分配速率节流协助任务。
使用场景
先测量再调参:停顿日志与分配画像在前、收集器旗标在后。换异种收集器之前先降分配速率——池化热对象、原始类型集合、缓冲复用。按 SLA 选收集器:吞吐批处理与 p99 敏感 API 各有所归。
常见误区
“并发收集器无停顿”是缩小而非消除:根扫描与搬迁仍停线程。停顿不只看堆大小——存活集、引用密度、分配速率同样主导。巨型对象会跳过年轻代并破坏老年代节奏;分配突发超过标记速度时,并发收集器会让分配节流反过来压制应用。无安全点轮询的长计数循环能把微停顿拉成数百毫秒。