可达性分析算法-确定那些对象是垃圾(转)
2017-06-10 19:42
344 查看
在主流的商用程序语言(Java、C#,甚至包括前面提到的古老的Lisp)的主流实现中,都是称通过可达性分析(Reachability Analysis)来判定对象是否存活的。这个算法的基本思路就是通过一系列的称为“GC Roots”的对象作为起始点,从这些节点开始向下搜索,搜索所走过的路径称为引用链(Reference Chain),当一个对象到GC Roots没有任何引用链相连(用图论的话来说,就是从GC Roots到这个对象不可达)时,则证明此对象是不可用的。如图3-1所示,对象object 5、object 6、object 7虽然互相有关联,但是它们到GC Roots是不可达的,所以它们将会被判定为是可回收的对象。
在Java语言中,可作为GC Roots的对象包括下面几种:
虚拟机栈(栈帧中的本地变量表)中引用的对象。
方法区中类静态属性引用的对象。
方法区中常量引用的对象。
本地方法栈中JNI(即一般说的Native方法)引用的对象。
参考:http://blog.csdn.net/jtracydy/article/details/61416634
更多:
http://blog.csdn.net/ochangwen/article/details/51406779
在Java语言中,可作为GC Roots的对象包括下面几种:
虚拟机栈(栈帧中的本地变量表)中引用的对象。
方法区中类静态属性引用的对象。
方法区中常量引用的对象。
本地方法栈中JNI(即一般说的Native方法)引用的对象。
参考:http://blog.csdn.net/jtracydy/article/details/61416634
更多:
http://blog.csdn.net/ochangwen/article/details/51406779
相关文章推荐
- Java虚拟机垃圾回收(一) 基础:回收哪些内存/对象 引用计数算法 可达性分析算法 finalize()方法 HotSpot实现分析
- Java虚拟机垃圾回收(一) 基础:回收哪些内存/对象 引用计数算法 可达性分析算法 finalize()方法 HotSpot实现分析
- 深入理解JVM--第三章--判断对象是否存活(引用计数算法、可达性分析算法,最终判定)
- GC用的引用可达性分析算法中,哪些对象可作为GC Roots对象
- Java对象是否存活之引用计数算法&可达性分析算法
- JVM——引用计数算法和可达性分析算法——判断对象是否需要被回收
- 深入理解JVM03--判断对象是否存活(引用计数算法、可达性分析算法,最终判定),Eclipse设置GC日志输出,引用
- 判断对象存活:可达性分析算法
- javaVM 判断对象实例何时回收 用的可达性分析算法,而非引用计数算法
- 可达性分析算法中,哪些对象可以作为GC Roots
- Java中判断对象是否存活算法之可达性分析算法
- 垃圾回收中对象的五种可达性——强、软、弱、虚、不可达
- 对象引用算法、垃圾收集算法、内存分配策略
- Java JVM 3:垃圾收集算法 - 复制算法(伪代码实现与深入分析)
- java 垃圾回收总结(可达性分析 引用分类
- 《深入理解JAVA虚拟机》学习笔记(二)JAVA垃圾收集之对象存活判定算法
- 垃圾收集分析(1)-Java对象结构(上)
- Java JVM 1:垃圾收集算法 - 标记清除算法(伪代码实现与深入分析)
- Java垃圾回收时对对象的标记分析
- 【005】【JVM——Hotspot算法实现存活对象判定和垃圾收集】