判断对象已死:
1》引用计数算法:无法解决相互循环引用的问题。例如:objA.instance=objB及objB.instance=objA等
2》可达性分析法:通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可引用的。
GC Roots的对象包括下面几种:
1)虚拟机栈中引用的对象
2)方法区中类静态属性引用的对象
3)方法区中常量引用的对象
4)本地方法栈中JNI引用的对象
回收方法区:
1)判断类是否是“无用的类”:
该类所有的实例都已经被回收。
加载该类的ClassLoader已经被回收。
该类对应的java.lang.Class对象没有在任何地方被引用,无法在任何地方通过反射访问该类的方法。
判断对象已死——摘自《深入理解java虚拟机》(每天学一点Day20191109)
最新推荐文章于 2021-06-17 11:27:53 发布