jvm如何判断实例对象是否需要回收
2016-06-15 14:36
555 查看
java虚拟机判断一个对象实例是否可以被回收,并非引用计数算法。
因为引用计数算法很难解决对象直接互相循环引用的问题。
所以java C#都是使用可达性分析来判断对象是否可以回收的。
这个算法的基本思路就是通过一系列的称为“GC Root”的对象作为起始点,从这些节点开始向下搜素,搜索所走过的路径称为应用链,当一个对象到GC Roots没有任何引用链相连时。则证明此对象时不可用的,可以被回收了。如下图对象object5,object6,object7虽然互相有关系,但是没有GC roots可以达到他们。所以他们时可以被回收的对象。
因为引用计数算法很难解决对象直接互相循环引用的问题。
所以java C#都是使用可达性分析来判断对象是否可以回收的。
这个算法的基本思路就是通过一系列的称为“GC Root”的对象作为起始点,从这些节点开始向下搜素,搜索所走过的路径称为应用链,当一个对象到GC Roots没有任何引用链相连时。则证明此对象时不可用的,可以被回收了。如下图对象object5,object6,object7虽然互相有关系,但是没有GC roots可以达到他们。所以他们时可以被回收的对象。
相关文章推荐
- .NET垃圾回收器(GC)原理浅析
- 深入理解PHP原理之Session Gc的一个小概率Notice
- 浅析Java中的GC垃圾回收器的意义及与GC的交互
- 浅谈关于Java的GC垃圾回收器的一些基本概念
- Android垃圾回收机制及程序优化System.gc
- 从JVM的内存管理角度分析Java的GC垃圾回收机制
- Java中垃圾回收器GC对吞吐量的影响测试
- 全面解析Java中的GC与幽灵引用
- Java堆空间占满的gc日志实例
- 大话JMM
- java.lang.OutOfMemoryError: GC overhead limit exce
- GC知识
- java性能优化 –gc日志收集与分析
- java7中G1垃圾收集器使用和流程总结
- java 虚拟机--新生代与老年代GC
- Erlang并发机制 – 垃圾回收
- JVM gc
- JDK5.0中JVM堆模型、GC垃圾收集详细解析
- java的finalize方法的认识 及GC相关机制