垃圾回收算法
- 标记清除法
步骤:
- 找到那些不会被回收的对象,比如静态变量或正在执行的对象,将其标记为 GC Root
- 顺着 GC Root 对象的引用链找,直接或者间接引用的标记是 GC Root
- 清除: 释放未加标记的对象占用的内存 注意:
- 会产生内存碎片
- 标记整理法
步骤:
- 前面的标记阶段、清理阶段与标记清除法类似
- 多了一步整理的动作,将存活对象向一端移动,可以避免内存碎片产生 注意:
- 性能上比较慢
- 多用于新生代中
- 标记复制法
步骤:
- 前面的标记阶段、清理阶段与标记清除法类似
- 将整个内存分成两个大小相等的区域,from 和 to,其中 to 总是处于空闲,from 存储新创建
- 在找出存活对象后,会将它们从 from 复制到 to 区域,复制的过程中自然完成了碎片整理
- 复制完成后,交换 from 和 to 的位置即可 注意:
- 空间成倍增加
- 多用于老年代中