1、常见的垃圾回收算法
1.1 引用计数
原理:只要对象之间互相有引用,也就是,只要对象被引用了,GC 就不进行垃圾回收
缺点:
- 每次对对象赋值时要维护引用计数器,且计数器本身也有一定的消耗
- 比较难处理循环引用
JVM 的实现一般不采用这种方式。
1.2 复制
年轻代中使用的是Minor GC,这种 GC 算法采用的是复制算法。
原理:将可用内存按容量划分为大小相等的两块,每次只使用其中的一块。当这一块的内存用完了,就将还存活着的对象复制到另外一块上面,然后再把已使用过的内存空间一次清理掉。如下图:从根集合(GC Root)开始,通过 Tracing 从 From 中找到存活对象,拷贝到 To 中,然后 From 和 To 交换身份,下次内存分配从 To 开始。
优点:
- 没有标记和清除的过程,效率高
- 内存在分配时不用考虑内存碎片等复杂情况&#