工作原理:设置引用数,使用引用计数器在引用关系发生改变时修改引用数字,当引用数字为0的时候立即回收
优点:
- 发现垃圾时立即回收(可以即时回收垃圾对象)
- 最大限度减少程序暂停(减少程序卡顿时间)
缺点:
- 无法回收循环引用的对象
- 时间开销大(资源消耗较大)
- 遍历所有对象找标记活动对象
- 执行整理,移动对象位置
- 回收相应空间
- 回收过程采用复制算法+标记整理
- 新生代内存区分为两个等大小空间
- 使用空间为From,空闲空间为To
- 活动对象存储于From空间
- 标记整理后将活动对象拷贝至To
- From与To交换空间完成释放
何时使用:回收老生代对象时使用
工作原理:遍历对象进行标记,找到第一层的可达对象后停下让程序继续执行一会,程序执行一会之后继续让GC机制继续做二步的标记操作,同理往后继续让标记和代码执行交替进行,最后在标记完成过后进行垃圾回收