java提供的引用类型
强引用(Strong):引用存在,则不会被回收。例如直接new出来后被引用的对象。
软引用(Soft):在GC进行垃圾回收时,如果内存紧张,不够用的情况下会对这部分内存进行回收。
弱引用(Weak):在下一轮GC进行垃圾回收时,该部分内存会被回收。
- 如果存在A a = new A(new WeakReference©) 的时候,则需等待A的强引用消失了才会收集对于C的弱引用,也就是对象不可达才会按照虚引用得规则进行回收。
-
- 如果存在一个强引用指向一个对象,同时存在一个弱引用也指向这个对象,那这个下一轮垃圾回收时也是不会被回收的。
虚引用(Phantom):随时有可能被回收掉。