1.垃圾回收回顾
1.1 概念:
垃圾回收算法目前常见的也就那么几种,如:标记-清除、标记-复制、标记-整理。在此基础上可以采用分代管理(新生代、老年代、永久代),每代采用不同的垃圾回收算法,以提高整体的回收效率。
1.2 步骤:
- 标记存活对象和可回收对象(可达性分析算法、计数法)
- 对可回收对象采用进行垃圾回收处理
1.3 标记方法:
- 可达性分析算法:可达性分析算法是以根对象集合(GC Roots)为起始点,按照从上至下的方式进行搜索,搜索所走过的路径称为引用链(Reference Chain),通过判断对象与GC Roots之间是否有引用链相连来判断该对象是否需要回收,如果目标对象没有任何引用链相连,则是不可达的,就意味着该对象已经死亡,可以标记为垃圾对象。
- 引用计数算法:为每一个对象分配一个计数器,当这个对象被另一个对象引用时,这个计数器就加一;当被另一个对象取消引用时,计数器就减一。当这个计数器的值为零时,就表示当前对象没有被任何对象所引用,那么这个对象就可以被垃圾回收器进行回收了。该方法实现起来非常简单,但是有一个致命的缺点,那就是不能解决各对象之间循环引用的问题。