概念
该算法主要有两个阶段。
1. 标记阶段:找到所有可访问的对象,做个标记
2. 清除阶段:遍历堆,把未被标记的对象回收
图示
一般是根据可达性分析法把垃圾对象标记起来,然后在进行清除。
应用场景:该算法一般应用于老年代,因为老年代的对象生命周期比较长。
两大问题:效率问题,空间问题。
内存区域会出现越来越多的不连续区域(碎片化),这就导致当我们分配一个大空间的时候,空间不连续,我们在找的时候就非常麻烦。影响性能。
如果找不到,我们的虚拟机会在一次触发垃圾回收,这个过程非常耗性能。
优缺点
标记清除算法的优点和缺点
1. 优点
- 是可以解决循环引用的问题
- 必要时才回收(内存不足时)
2. 缺点:<