垃圾回收(Garbage Collection,GC)是 Java 自动内存管理的核心机制,负责识别并回收不再使用的对象,避免内存泄漏和手动内存管理的复杂性。以下是 GC 的核心概念和主流算法:
一、垃圾回收的基本原理
1. 什么是垃圾?
- 垃圾对象:程序中不再被任何引用指向的对象(即不可达对象)。
- GC 的目标:回收这些对象占用的内存空间。
2. 判断对象是否可回收的算法
| 算法 | 原理 | 优缺点 |
|---|---|---|
| 引用计数法 | 对象被引用时计数器+1,引用失效时-1,计数器=0即为垃圾。 | ✅ 简单高效 ❌ 无法解决循环引用问题(如 A→B→A) |
| 可达性分析法 | 从 GC Roots 出发,遍历引用链,未被引用的对象视为垃圾(Java 默认采用)。 | ✅ 解决循环引用问题 ❌ 需要暂停用户线程(Stop-The-World,STW) |
GC Roots 包括:
- 虚拟机栈中引用的对象(局部变量)。
- 方法区中静态变量引用的对象。
- 本地方法栈中 JNI 引用的对象。
- 活跃线程对象。

机制与算法详解&spm=1001.2101.3001.5002&articleId=147600105&d=1&t=3&u=78fb4979ce0f4d94adbc5f2280a5eb34)
1687

被折叠的 条评论
为什么被折叠?



