可达性分析算法
可达性分析算法
通过GC Roots的对象为起点,向下搜索,能到达的对象为不可回收对象,不能到达的对象为需要回收的对象。Java中就是通过可达性分析算法来判定对象是否存活的。
GC Roots的对象
1)、方法区中常量引用的对象;
2)、方法区中类静态属性(static修饰)引用的对象;
3)、虚拟机栈(本地变量表)中引用的对象(正在被使用);
4)、本地方法栈(native修饰方法)中引用的对象;
图解
如下图,a~h均为对象,通过GC Roots向下搜索,可以到达的对象为a、b、d、f,所以a、b、d、f为不可回收对象,其他的均为可回收对象。
如果有写的不对的地方,请大家多多批评指正,非常感谢!