::我的理解
要回收垃圾,可以想象。在一块内存区域中,首先进行标记,然后进行清除。
- 最简单的是,标记哪块是垃圾后,在清除阶段,直接标记回收掉。即标记清除法。内存不连续
- 标记后,进行复制。把有用的内存块,复制保存起来。即标记复制法,内存连续,但是需要复制操作,而且需要额外开辟一半内存空间进行保存。适用于 新生代,大部分对象,都是招生熄灭的场景。
- 标记后,不直接进行回收,而且将存活的对象进行整理到一边,然后回收对象在一起,进行回收。即标记整理法
分代收集算法
当前虚拟机的垃圾收集都采用分代收集算法,这种算法没有什么新的思想,只是根据对象存活周期的不同将内存分为几块。一般将 java 堆分为新生代和老年代,这样我们就可以根据各个年代的特点选择合适的垃圾收集算法
增量收集算法, 待研究。是不是就是常用的垃圾收集器的实现??待确认