如何判断对象仍然存活?

如何判断对象仍然存活?
有两种方式,引用计数算法(reference counting)和可达性分析算法。
- 引用计数算法
引用计数器的算法是这样的:在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一;任何时刻计数器为零的对象就是不可能再被使用的。
- 可达性分析算法
目前,主流的Java虚拟机采用的是可达性分析算法来进行垃圾回收。该算法的核心思想是通过一组GC Roots作为起始点,构建初始的存活对象集合(即GC Root Set)。然后从这个集合开始,探索所有可以从GC Roots引用到的对象,并将它们添加到该集合中,这个过程被称为标记(mark)阶段。最终,未被探索到的对象被视为不可达的,即已经死亡,可以被回收。