3.1概述:
垃圾回收主要是讲堆内存的回收
3.2判断对象已死
3.2.1:引用计数算法:
有引用就在计数器中+1,引用为0对象就判断为死亡。python等语言在使用这种算法,java没有
3.2.2:可达性分析算法:
以GC Roots的对象为起点,向下搜索,没有在链上的则是不可用的,表明可回收。java使用这种算法。
GC Roots对象包括下面几种:
1、虚拟机栈(栈帧中的本地变量表)中引用的对象
2、方法区中类静态属性引用的对象
3、方法区中常量引用的对象
4、本地方法栈中JNI(native方法)引用的对象
3.3引用:
JDK1.2后将引用概念进行了扩充,将引用分为强引用,软引用,弱引用,虚引用4种,引用强度逐次减弱。