java中对象可达性分析 + 自动回收算法
“对象可达性分析 + 自动回收算法”是Java GC(垃圾回收)核心的两个环节,下面详细解释:
1. 对象可达性分析(Reachability Analysis)
目的:
判定哪些对象“活着”,哪些对象已经变成“垃圾”可以回收。
原理:
JVM 会用一组叫“GC Roots(垃圾收集根节点)”的基础对象为起点,从这些根出发,沿着对象之间的引用关系去递归搜索。如果某个对象能通过这条引用链与GC Root相连,那么它就是“可达对象”(即还活着,暂不回收);反之则是“不可达对象”,等待被GC。
常见的GC Roots有:
- 虚拟机栈中的对象引用(如局部变量引用的对象)
- 方法区中的静态对象引用
- 方法区中常量引用
- JNI(本地方法接口)引用
简化理解:
像一棵树,从根节点走,看哪些对象能被触及到,