如何判断对象仍然存活?
常见的判断对象是否存活的方法有两种:
- 引用计数法:该方法通过对对象进行引用计数,即记录对象被引用的次数。当引用计数为0时,表示对象没有被引用,可以被回收。但是引用计数法无法解决循环引用的问题,导致内存泄漏。
- 可达性分析法:常见的垃圾回收算法中,主要采用的是可达性分析算法。该算法从一组称为"根"的特定对象(如全局变量、活动线程等)开始,通过追踪对象之间的引用关系形成引用图,然后检查哪些对象可以从"根"对象访问到。如果一个对象可以从"根"对象访问到,那么它就被认为是存活的。而对于无法从"根"对象访问到的对象,则被判定为不再存活,垃圾回收器将对其进行回收。