Serial 收集器
串行(单线程)收集器,进行垃圾收集时,需要暂停所有的用户线程。
采用复制算法
Parallel收集器
并行(多线程)收集器。
Parallel的目标是达到一个可控制的吞吐量。
- Parallel Scavenge(新生代):复制算法
- Parallel Old(老年代):标记整理法
ParNew收集器
并行收集器,新生代,复制算法。
尽可能缩短垃圾收集时用户线程的停顿时间。
唯一可以与CMS配合的新生代收集器。
CMS收集器
并发,标记-清除。
G1
复制算法。
将堆内存拆分成大小为 1MB 到 32MB 的 Region 块,Region 在逻辑上可以自由组合形成各个分代。
以 Region 为单位自由地组合成新生代、老年代、Eden 区、Survivor 区和大对象区(Humongous Region)等。随着垃圾回收和对象分配的进行,每个 Region 也不会一直固定属于某个分代,它们可以随时扮演任何一个分代区域的内存角色。
G1里面会维护一个Collect Set集合。这个集合记录了待回收的 Region 块的信息
ZGC收集器
JDK11引入,标记-清除
-
极低的垃圾回收停顿时间;
-
可预测性;
-
适用于大内存堆。