学习笔记08 - java GC(垃圾回收)标记算法

对象被判定为垃圾的标准:

     没有被其他对象引用

判定对象是否为垃圾的算法:

     引用计数算法
     可达性分析算法


引用计数算法
判断对象的的引用数量:
通过判断对象的引用数量来决定对象是否可以被回收
每个对象实例都有一个引用计数器,被引用+1,完成引用-1
任何引用计数为0的对象实例可以被当作垃圾收集

几乎不打断程序执行,对实时性要求高的程序有利

优点:
执行效率高,程序执行受影响较小
缺点:
无法检测出循环引用的情况,导致内存泄漏
父调子,子在调父,无法回收

可达性分析算法

学习笔记08 - java GC(垃圾回收)标记算法

可以作为GC Root的对象
虚拟机栈中引用的对象(栈帧中的本地变量表)
方法区中的常量引用对象
方法区中的静态属性引用的对象
本地方法栈中JNI(Native 方法)的引用对象
活跃线程的外用对象