Java虚拟机之GC收集器对比解读
Java 虚拟机提供了多种垃圾收集器(Garbage Collector, GC),每种收集器都有其特定的设计目标和适用场景。
JVM 的垃圾收集器主要分为两大类:分代收集器和分区收集器,分代收集器的代表是 CMS,分区收集器的代表是 G1 和 ZGC,下面我们来看看这两大类的垃圾收集器。
一、核心原理和算法
1.1 分代模型
Java堆分为年轻代(Eden、Survivor区)和老年代,针对对象生命周期采用不同回收策略:
1)年轻代:使用复制算法(Minor GC),存活对象在Survivor区间复制,年龄阈值达标的晋升老年代。
2)老年代:采用标记-清除或标记-整理算法(Major GC/Full GC)。
1.2 基础算法
标记-清除:简单但产生内存碎片,适用于老年代。
复制算法:无碎片但空间利用率低,常用于新生代。
标记-