3.1、JVM-垃圾回收-如何判断对象为垃圾对象?
-
如何判断对象为垃圾对象?
-
引用计数法
-
可达性分析法
-
-
如何回收?
-
回收策略
-
标记-清除算法
-
复制算法
-
标记-整理算法
-
分代收集算法
-
-
垃圾回收器
-
Serial
-
Parnew
-
Cms
-
G1
-
-
-
何时回收?
引用计数算法
在对象中添加一个引用计数器,当有地方引用这个对象的时候,引用计数器的值就+1,当引用失效的时候,计数器的值就-1(简单便捷,但没有人使用这种算法,因为这种算法只在引用地址指向堆的地方计数,如果堆中的多个实例相互引用而不是引用地址引用,这时引用计数算法是计数的,导致堆中相互引用的对象不会被垃圾回收)
-
打印垃圾回收日志的参数
-
垃圾日志简单信息:-verbose:gc
-
垃圾日志详细信息:-verbose:gc -XX:+PrintGCDetails
-
可达性分析法
通过一系列的称为'GC Roots'的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连时,则证明此对象是不可用的。避免了引用计数算法的问题,如下图object5、6、7当有对象相互关联时,但是它们到GC Roots是不可达的,所以他们将会被判定为是可回收的对象。
注:博文内容来自书本《深入理解Java虚拟机》第2版 周志明著