来判断对象是否存活的基本思路就是通过一系列成为“GC Roots”的对象作为起始点,从政节点开始向下搜索,搜索所走过的路径成为引用链,当一个对象到 GC Roots没有任何引用链相连时则证明此对象是不可用的,作为GC Roots的对象包括下面几种:
- 虚拟机栈中引用的对象,各个线程调用方法堆栈中使用到的参数、局部变量、临时变量等
- 方法区中类静态属性引用的对象; java 类的引用类型静态变量
- 方法区中常量引用的对象; 比如: 字符串常量池里的引用
- 本地方法栈中 Native 引用的对象
以上的回收都是对象,类的回收条件:
Class要被回收,必须同时满足以下条件
1、该类所有的实例都已经被回收,也就是堆中不存在该类的任何实例
2、加载该类的 classLoader 已经被回收
3、该类对应的 java.lang.Class 对象没有在任何地方被应用,无法再任何地方通过反射访问该类的方法
最后修改于 2021-03-15 17:16:29
如果觉得我的文章对你有用,请随意赞赏
扫一扫支付

