1 如何确定垃圾

java 采用引用计数法与可达性分析来确定是否回收垃圾。其中引用计数法会容易产生循环引用的问题。可达性分析通过根搜索算法来实现。根

搜索算法以一系列GC Root s 的点作为起点向下搜索,在一个对象到任何GC Root s 都没
有引用链相连时,说明其已经死亡。

 

 2   接下来来谈谈  引 用计数法循环引用的问题

在Java 中如果要操作对象,就必须先获取该对象的引用,因此可以通过引用计数法
来判断一个对象是否可以被回收。在为对象添加一个引用时,引用计数加l ;在为对象删
除一个引用时, 引进计数减l ;如果一个对象的引用计数为0 ,则表示此刻该对象没有被
引用,可以被回收。
引用计数法容易产生循环引用问题。循环引用指两个对象相互引用,导致它们的引
用一直存在,而不能被回收,

如图1 – 7 所示, Object !与Object2 互为引用,如果采用引
用计数法,则Object I 和Object2 由于互为引用,其引用计数一直为l ,因而无法被回收。

 

 

 可达性分析为了解决引用计数法的循环引用问题, Java 还采用了可达性分析来判断对象是否可以被回收。

 

具体做法是首先定义一些GC Root s 对象,然后以这些GC Roots 对象作为起
点向下搜索,如果在GC roots 和一个对象之间没有可达路径, 则称该对象是不可达的。
不可达对象要经过至少两次标记才能判定其是否可以被回收,如果在两次标记后该对象
仍然是不可达的,则将被垃圾收集器回收。

原文地址:http://www.cnblogs.com/labimeilexin/p/16880483.html

1. 本站所有资源来源于用户上传和网络,如有侵权请邮件联系站长! 2. 分享目的仅供大家学习和交流,请务用于商业用途! 3. 如果你也有好源码或者教程,可以到用户中心发布,分享有积分奖励和额外收入! 4. 本站提供的源码、模板、插件等等其他资源,都不包含技术服务请大家谅解! 5. 如有链接无法下载、失效或广告,请联系管理员处理! 6. 本站资源售价只是赞助,收取费用仅维持本站的日常运营所需! 7. 如遇到加密压缩包,默认解压密码为"gltf",如遇到无法解压的请联系管理员! 8. 因为资源和程序源码均为可复制品,所以不支持任何理由的退款兑现,请斟酌后支付下载 声明:如果标题没有注明"已测试"或者"测试可用"等字样的资源源码均未经过站长测试.特别注意没有标注的源码不保证任何可用性