目录
判断对象为垃圾对象的两种方法
- 如何判断对象为垃圾对象?
-
引用计数法
-
可达性分析法
-
-
如何回收?
-
回收策略
-
标记-清除算法
-
复制算法
-
标记-整理算法
-
分代收集算法
-
-
垃圾回收器
-
Serial
-
Parnew
-
Cms
-
G1
-
-
-
何时回收?
引用计数算法
在对象中添加一个引用计数器,当有地方引用这个对象的时候,引用计数器的值就+1,当引用失效的时候,计数器的值就-1(简单便捷,但没有人使用这种算法,因为这种算法只在引用地址指向堆的地方计数,如果堆中的多个实例相互引用而不是引用地址引用,这时引用计数算法是计数的,导致堆中相互引用的对象不会被垃圾回收)
可达性分析法
通过一系列的称为’GC Roots’的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的。避免了引用计数算法的问题,如下图object5、6、7当有对象相互关联时,但是它们到GC Roots是不可达的,所以他们将会被判定为是可回收的对象。
注:博文内容来自书本《深入理解Java虚拟机》第2版 周志明著
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/72577.html