1.如何确定对象存活

1.1 引用计数法

描述:给对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加1;当引用失效时,计数器值就减1;任何时刻计数器为0的对象就是不可能再被使用的。

优点:实现简单,判定效率高

缺点:互相引用对方,导致引用计数器都不为0,于是引用计数器无法通知GC收集器回收他们;标记和清楚两个过程的效率不高;标记清楚之后会产生大量不连续的内存碎片。

1.2 可达性分析算法

在主流的商用程序语言(Java、C#,甚至包括前面提到的古老的Lisp)的主流实现中,都是称通过可达性分析(Reachability Analysis)来判定对象是否存活的。这......