ZGC, A Scalable Low-Latency Garbage Collector(Experimental)
可伸缩, 低延迟的 gc
ZGC, 这应该是 JDK11 最为瞩目的特性, 没有之一. 但是后面带了 Experimental, 说明这还不建议用到生产环境.
GC 暂停时间不会超过 10ms
既能处理几百兆的小堆, 也能处理几个 T 的大堆 (OMG)
和 G1 相比, 应用吞吐能力不会下降超过 15%
为未来的 GC 功能和利用 colord 指针以及 Load barriers 优化奠定基础
初始只支持 64 位系统
ZGC 的设计目标是: 支持 TB 级内存容量, 暂停时间低 (<10ms), 对整个程序吞吐量的影响小于 15%. 将来还可以扩展实现机制, 以支持不少令人兴奋的功能, 例如多层堆 (即热对象置于 DRAM 和冷对象置于 NVMe 闪存), 或压缩堆.
GC 是 java 主要优势之一. 然而, 当 GC 停顿太长, 就会开始影响应用的响应时间. 消除或者减少 GC 停顿时长, java 将对更广泛的应用场景是一个更有吸引力的平台. 此外, 现代系统中可用内存不断增长, 用户和程序员希望 JVM 能够以高效的方式充分利用这些内存, 并且无需长时间的 GC 暂停时间.
STW - stop the world
ZGC 是一个并发, 基于 region, 压缩型的垃圾收集器, 只有 root 扫描阶段会 STW, 因此 GC 停顿时间不会随着堆的增长和存活对象的增长而变长.
- ZGC : avg 1.091ms max:1.681
- G1 : avg 156.806 max:543.846
用法 : -XX:+UnlockExperimentalVMOptions -XX:+UseZGC, 因为 ZGC 还处于实验阶段, 所以需要通过 JVM 参数来解锁这个特性
来源: https://www.cnblogs.com/androidsuperman/p/10351728.html