一、概述
标记清除算法分为两个阶段,即:标记和清除两个阶段,先标记出要回收的对象,然后统一回收这些对象。形如:
老年代一般是由标记清除或者标记清除 + 标记压缩的混合实现。
二、原理
用通俗的话解释一下标记清除算法,就是当程序运行期间,如果可以使用的内存被耗尽的时候,GC线程就会被触发并将程序暂停,随后将要被回收的对象标记一遍,最后统一回收这些对象,最终统一回收这些对象,完成标记清理工作后,接下来便让应用程序恢复运行。
主要进行两项工作,第一项是标记,第二项是清除:
标记:从引用根节点开始标记遍历所有的GC Roots,先标记出需要回收的对象;
清除:遍历整个堆,把标记的对象清除。
缺点:此算法需要暂停整个应用,会产生内存碎片