一、如何判断对象可以回收
1.1引用计数法
定义:当引用数为0时进行回收
问题:无法解决循环引用
python采用引用计数法垃圾回收机制
1.2可达性分析算法
(堆空间分析器)
GC root原理:通过对枚举GCroot对象做引用可达性分析,即从GC root对象开始,向下搜索,形成的路径称之为引用链。
如果一个对象到GC roots对象没有任何引用,没有形成引用链,那么该对象等待GC回收。
GC Root对象有哪些
虚拟机栈 -----栈帧中的本地变量表中引用的对象 ,如正在运行方法所使用的参数、局部变量、临时变量等
本地方法栈 -----即一般说的Native方法引用的对象
方法区----- 类静态属性引用的对象
方法区----- 常量引用的对象,如字符串常量池(StringTable)里的引用
以及Java虚拟机内部的引用,如基本数据类型对应的Class对象、常驻的异常对象(如:NullPointException、OutOfMermoryError)等,还有系统类加载器;
被同步锁(synchronized关键字)持有的对象;
反映虚拟机内部情况的JMXBean、HVMTI中注册的回调、本地代码缓存等。
1.3四种引用
强软弱虚,以及终结器引用(实线为强引用)
标签:对象,虚拟机,回收,-----,垃圾,GC,引用 From: https://www.cnblogs.com/fulaien/p/16923337.html