判断对象存活的算法:
- 引用计数算法
当一个对象被引用一次,计数器就加1,当引用被释放,就减1,当计数器为0时,说明对象未被引用,则可以回收
缺陷:当两个对象互相引用时,则双方的计数器都是1,这两个对象就一直无法正常回收。 - 可达性分析算法
通过一个GC Roots和对象之间建立一个引用路径,当对象和GC Roots 之间存在可达路径,说明对象是被引用的,当路径不可达时,则可回收。
垃圾收集算法:
- 标记-清除算法
- 复制算法
- 标记-整理算法
- 分代收集算法
- 在新生代,有大量的对象死去,所以采用复制算法,提高回收效率
- 老年代,对象存活率高,则采用标记-清理或者标记-整理算法清回收