如何判断对象是否可以被回收掉?对象已经没有价值了?对象已死?
1. 引用计数算法
给对象添加一个引用计数器,每当该对象被其它对象引用的时候,计数器就加1,当某一个引用失效的时候就减1,如果对象的引用计数器持续一段时间内都为0,该对象就可以被回收。
应用:COM、FlashPlayer、Python
2. 根搜索算法:
选一些特定的对象为“GC Roots”对象作为起点,从这个起点开始向下搜索,搜索走过的路径为一个引用链,当一个对象到 GC Roots 没有任何引用链的时候,该对象就可以被回收。
应用:Java,C#
引用计数法的缺点就是无法处理相互引用的对象。