最基础的收集算法,其他收集算法都是基于这种思想。标记清除算法分为“标记”和“清除”两个阶段;首先标记出需要回收的对象;标记完成之后统一清除对象。
从"GC Roots"集合开始,将内存整个遍历一次,保留所有可以被GC Roots直接或间接引用到的对象,而剩下的对象都当作垃圾对待并回收,这个算法需要中断进程内其它组件的执行并且可能产生内存碎片。
它的主要缺点:标记和清除过程效率不高;标记清除之后会产生大量不连续的内存碎片。