垃圾回收机制
核心概念
垃圾判定算法
1. 引用计数法(Reference Counting)
// 循环引用示例
public class CircularReferenceDemo {
Object instance = null;
public static void main(String[] args) {
CircularReferenceDemo a = new CircularReferenceDemo();
CircularReferenceDemo b = new CircularReferenceDemo();
a.instance = b;
b.instance = a;
a = null;
b = null;
// 引用计数法无法回收 a 和 b 指向的对象
System.gc();
}
}2. 可达性分析(Reachability Analysis)⭐
GC Roots 包括
四种引用类型
引用类型
回收时机
典型应用
finalize() 方法
垃圾回收算法
1. 标记-清除(Mark-Sweep)
2. 标记-复制(Mark-Copy)
3. 标记-整理(Mark-Compact)
4. 分代收集(Generational Collection)
对象晋升老年代的条件
垃圾收集器
收集器总览
Serial / Serial Old
ParNew
Parallel Scavenge / Parallel Old
CMS(Concurrent Mark Sweep)⭐⭐⭐⭐⭐
四个阶段
缺点
G1(Garbage First)⭐⭐⭐⭐⭐
核心设计
回收过程
停顿预测模型
ZGC ⭐⭐⭐⭐
核心技术
适用场景
Shenandoah
GC 日志分析
开启 GC 日志
G1 GC 日志示例
面试要点
高频问题
常见陷阱
参考资料
Last updated