垃圾回收之判断对象否需要被回收(根搜索算法和引用搜索算法)
2018-01-25 15:56
435 查看
根搜索算法(JAVA的虚拟机用的是这个)
可以参考这个 http://blog.csdn.net/qq_15022971/article/details/79162126
引用搜索算法:是常被初学JAVA者误解,java的垃圾回收在判断一个对象是否为可以被回收的对象时,常被误以为:没有引用指向
这个对象了,GC线程就会把他当作垃圾回收掉。
实则不然,比如 :
一个类叫Reference 里面包含一个Reference 类型的变量 instance;
Reference ref1=new Reference();
Reference ref2=new Reference();
ref1.instance=ref2;
ref2.instance=ref1;
ref1=null;
ref2=null;
system.gc();
这样的循环引用,两个对象分别都被彼此的属性引用着,但是又都是NULL,如果根据引用搜索算法,这两个对象是不会被垃圾
回收的,实则不然,
根搜索算法和引用搜索算法, 引用搜索算法主要就是解决不了循环引用的问题。
可以参考这个 http://blog.csdn.net/qq_15022971/article/details/79162126
引用搜索算法:是常被初学JAVA者误解,java的垃圾回收在判断一个对象是否为可以被回收的对象时,常被误以为:没有引用指向
这个对象了,GC线程就会把他当作垃圾回收掉。
实则不然,比如 :
一个类叫Reference 里面包含一个Reference 类型的变量 instance;
Reference ref1=new Reference();
Reference ref2=new Reference();
ref1.instance=ref2;
ref2.instance=ref1;
ref1=null;
ref2=null;
system.gc();
这样的循环引用,两个对象分别都被彼此的属性引用着,但是又都是NULL,如果根据引用搜索算法,这两个对象是不会被垃圾
回收的,实则不然,
根搜索算法和引用搜索算法, 引用搜索算法主要就是解决不了循环引用的问题。
相关文章推荐
- JVM——引用计数算法和可达性分析算法——判断对象是否需要被回收
- 怎样判断是否需要垃圾回收/对象是否存活
- JVM内存回收区域+对象存活的判断+引用类型+垃圾回收线程
- 第三章 JVM内存回收区域+对象存活的判断+引用类型+垃圾回收线程
- 第三章 JVM内存回收区域+对象存活的判断+引用类型+垃圾回收线程
- 垃圾收集器-GC以及判断对象存活的算法以及引用类型
- 两个互相引用对象的垃圾回收
- 垃圾回收的依据,如何判断一个对象已经毫无用处
- java 垃圾回收步步深入02----判断对象是否已死
- javascript基础(对象,对象属性,属性基本和引用数据类型,字面量创建对象,垃圾回收,属性的枚举)(十三)
- 流程的Python 第八章:对象引用、可变性和垃圾回收
- 表示弱引用,即在引用对象的同时仍然允许垃圾回收来回收该对象。
- jvm垃圾回收机制(二)算法和如何进行判断对象是否回收实例
- Java基础复习笔记 对象状态、引用种类、垃圾回收形式02
- Java对象的引用与垃圾回收
- jvm什么时候回收垃圾对象---引用计数和GC root
- GC是如何判断一个对象为"垃圾"的?被GC判断为"垃圾"的对象一定会被回收吗?
- 两个互相引用对象的垃圾回收
- 生存还是死亡 —— Java虚拟机如何判断对象是否需要回收
- Python 对象引用、可变性和垃圾回收