一、标记—清除算法
- 介绍
- 最基础的收集算法
- 涉及“标记”和“清除”:首先标记所需回收的对象,一并清除。
- 特征
- 效率不高
- 空间问题:结束后产生大量不连续的内存碎片,导致后续分配大内存对象时不得不提前触发垃圾收集操作。
二、复制算法
1.介绍
- 内存均分成两块,但只使用其中一块,这块用完了就将还存在的对象复制到第二块中,一次性清除使用过的内存空间。
- 无需考虑内存碎片问题
2.特征
- 实现简单,运行高效
- 内存缩小为一半,代价过大
-
三、标记-整理算法
介绍
1.先标记,将所有存活的对象都向一端移动
2.直接清除端边界以外的内存
四、分代收集算法
介绍
根据存活周期将内存分为几块,一般把堆分为新生代和老年代
新生代- 特征:每次垃圾回收时只有少量对象存活
- 算法:复制算法
老年代
- 特征:对象存活率高,无多余空间进行分配担保
- 算法:标记-清除或者标记-整理 算法