引用计数(已淘汰)
为每个对象存储一个计数RC,当有其他引用指向它时,计数RC++;当其他引用与其断开时,RC–;如果有RC==0,则回收它(及其所以指向的object)。
可达性分析法(根搜索算法)
把内存中的每一个对象都看作一个节点,并且定义了一些对象作为根节点“GC Roots”。以“GC Root”的对象作为起始点,开始向下搜索,搜索所走过的路径称为引用链。如果一个对象与起始点没有任何引用链,则说明不可用,需要被回收。
GC Roots:1.虚拟机栈(本地变量表)引用的对象。2.方法区静态属性引用的对象。3.方法区常量引用的对象。4.本地方法栈JNI(一般指naive方法)中引用的对象
图示object6、7、8与起始点没有任何引用链,则说明不可用,需要被回收。