前言:学习JVM,那么不可避免的要去了解JVM相关的垃圾回收算法,本文只是讲了讲了可达性分析算法,至于标记-清除、标记-复制,标记-整理,分代收集等等算法,会在近两天的文章中陆续更新出来。 很喜欢一句话:“八小时内谋生活,八小时外谋发展。”
共勉
地点:
湖南省永州市蓝山县舜河村
作者:
用心笑*
JVM 垃圾回收算法 -可达性分析算法- 一、先谈谈不被Java所用的引用计数法
- 二、可达性分析算法
- 2.1概念:
- 2.2、思路:
- 2.3、GC Roots可以是哪些?
- 1、详细解释:
- 2、总结
- 3、关键小技巧
- 4、注意
- 三、 对象的finalization机制
- 3.1、概述:
- 3.2、生存还是死亡?
- 3.3、具体过程
- 3.4、代码演示
- 四、自言自语
- 2.1概念:
- 2.2、思路:
- 2.3、GC Roots可以是哪些?
- 1、详细解释:
- 2、总结
- 3、关键小技巧
- 4、注意
- 3.1、概述:
- 3.2、生存还是死亡?
- 3.3、具体过程
- 3.4、代码演示
一、先谈谈不被Java所用的引用计数法
在java中是通过引用来和对象进行关联的,也就是说如果要操作对象,必须通过引用来进行。 那么很显然一个简单的办法就是通过引用计数来判断一个对象是否可以被回收。不失一般性,如果一个对象没有任何引用与之关联,则说明该对象基本不太可能在其他地方被使用到,那么这个对象就成为可被回收的对象了。这种方式成为引用计数法。
上面这段话看起来似乎并没有什么问题,但是我想起Spring中那个循环依赖,然后一套在这个引用计数法身上就翻车了。如下图:
为了解决这个问题,所以在Java中采取的是可达性分析法。即本文第二章节