1、引用计数法
引用计数法原理很简单,给每个新生对象配备一个计数器。当此对象被引用,计数器+1;当此对象的引用被断开,计数器-1。GC会定时询问这些计数器,当该计数器的值降到0就认为对象死亡,对象会被标记,等待清理。更高级的引用计数实现会引入“弱引用”的概念来打破某些已知的循环引用,但那是另一个话题了。此方法不能够处理弱引用的对象,故而至今已经被舍弃。
2、可达性分析法
可达性分析法较为复杂,需要管理全局的对象图信息。跟树型结构(root)的概念一致。此分析法只需管理根节点,从根节点出发扫描出去,基于引用的可到达性来判断对象的生死。这使得对象的生死状态只能批量的被识别出来,然后批量释放死对象。很好的解决了弱引用不能被成功标志的问题。被选为根节点的对象的引用,存储在java栈中。而被选举的这个过程是较为复杂的,在此不做论述,可自行查阅。目前虚拟机基本都是采用可达性算法。
GC的对象标记分析法
最新推荐文章于 2023-05-21 21:19:22 发布