导语
在GC 中最重要的算法就是GC标记-清除算法(Mark-Sweep GC)。在很多的场景下都还是在使用这个算法来进行垃圾回收操作。就如如同它的名字一样先标记,然后清除。下面就来看看标记清除算法到底如何实现。
文章目录
什么是GC标记-清除算法
GC标记清除是由两个阶段构成的,一个是标记阶段,就是把所有活跃对象都进行相应的标记,另一个是清除阶段,是把所有那些没有进行标记的对象,也就是所说的非活跃对象进行回收。通过这两个阶段的操作,就可以让不能被利用的内存空间重新得到利用。但所带来的的问题就是内存碎片化,为了解决这个问题就出现了标记复制算法,这个算法在其他博客中会进行分享。
根据标记清除算法的描述,它的两个阶段,分别由下面两个步骤组成。标记清除的伪代码如下。
mark_then_sweep(){
frist_mark_phase();//先标记
then_sweep_phase
本文详细介绍了GC标记-清除算法的原理,包括标记、清除、分配和合并四个阶段。虽然实现简单,与保守GC算法兼容,但存在碎片化、分配速度慢以及不兼容写时复制技术等问题。通过对内存管理策略的探讨,分析了算法的优缺点,并指出其在实际应用中的优化方向。
订阅专栏 解锁全文
2238

被折叠的 条评论
为什么被折叠?



