导语
在GC 中最重要的算法就是GC标记-清除算法(Mark-Sweep GC)。在很多的场景下都还是在使用这个算法来进行垃圾回收操作。就如如同它的名字一样先标记,然后清除。下面就来看看标记清除算法到底如何实现。
文章目录
什么是GC标记-清除算法
GC标记清除是由两个阶段构成的,一个是标记阶段,就是把所有活跃对象都进行相应的标记,另一个是清除阶段,是把所有那些没有进行标记的对象,也就是所说的非活跃对象进行回收。通过这两个阶段的操作,就可以让不能被利用的内存空间重新得到利用。但所带来的的问题就是内存碎片化,为了解决这个问题就出现了标记复制算法,这个算法在其他博客中会进行分享。
根据标记清除算法的描述,它的两个阶段,分别由下面两个步骤组成。标记清除的伪代码如下。
mark_then_sweep(){
frist_mark_phase();//先标记
the