有哪些垃圾收集算法?

1、标记-清除算法

首先标记出所有需要回收的对象,然后统一回收

缺点:(1)标记和清除过程效率都不高 (2)会产生不连续的内存碎片

2、复制算法

将内存划分为大小相等的两块,每次只用其中一块,当这块内存用完时,就将该内存上存活的对象复制到另一块上面,然后把使用过的内存一次清理掉

优点: 简单高效、不会产生内存碎片

缺点:内存使用率低(只能使用一半),持续复制长生存期的对象导致效率低

3、标记-整理算法

首先标记出所有存活的对象,然后将存活的对象往内存的一端移动,最后将端边界以外的内存清理掉

4、分代收集算法

将java堆分为新生代和老年代,各个年代选择自己合适的收集算法

新生代:大批对象存活时间短,选择复制算法

老年代:对象存活率高,使用标记-清理或标记-整理



标签: 标记、存活、年代、清理、新生代、面试
  • 回复
隐藏