0. 标记-复制算法
标记-复制算法分三个阶段:
- 标记阶段:从 GC Roots 出发,标记存活对象。
- 转移阶段:把存活对象复制到新的内存地址,原来的内存空间变成可回收的。
- 重定位阶段:存活对象被复制到其他地方后,所有指向对象旧地址的指针都要调整到对象新的地址上。
1. 概述
Z Garbage Collector,即ZGC,是一个可伸缩的、低延迟的垃圾收集器。只支持 64 位的系统。
ZGC 未分代,每次 GC 都是 FullGC 。
1.1 ZGC 的设计目标
- 亚毫秒级的最大暂停时间。
- 暂停时间不随堆、存活对象数量、根集合大小的增长而增长。
- 可处理的堆大小从 8MB 到 16TB。
总的来说,ZGC 具有如下特性:
- 并发
- 基于 Region
- 压缩
- NUMA 友好
- 使用着色指针
- 使用读屏障 load barriers
截至 JDK 14,ZGC 已在主流的操作系统上获得支持。