GC标记-压缩算法
gc标记-压缩算法是 详解gc(垃圾回收)机制三:GC复制算法 和 详解gc(垃圾回收)机制四:GC标记-清除算法 结合的产物
可以看到,从此章开始,gc算法从一个独立的,变成了多个组合方式的,大多数有着垃圾回收的语言,都是使用了多个gc算法组合进行的gc
步骤
1:遍历所有的活动对象,并且标记
2:设定scan指针,new_address指针,scan找到活动对象之后,将活动对象头信息的forwarding指针设定为new_address,
new_address指针根据活动对象长度移动,scan根据对象长度移动
3:再次遍历堆,将活动对象复制到forwarding指针指向处,标记-压缩 过程完成
优点
1:没有内存碎片化,可以有效的利用堆
缺点
1:压缩算法需要搜索3次堆,成本大