引用计数法
无法解决循环依赖问题
标记清除算法
解决循环依赖问题,而且不需要扫描所有对象
- 标记:遍历所以Root对象
- 清除:清除所有不可达的对象
- GC Roots对象:正在执行的方法的参数、活动线程、类的静态字段、JNI引用
标记清除整理算法
基于标记清除算法,再加上碎片整理,移动对象需要时间
STW:Stop The World 清除大量对象,解决依赖关系不断变化的问题
标记复制算法
分代假设:绝大部分对象存活时间很短,存活时间较长的对象,可能存活更久
内存区划分为:年轻代、存活区、老年代
GC暂停时间
与堆内存大小和对象总数没直接关系,与存活对象数有直接影响
各垃圾回收器比较
