强引用:
- 就是普通引用。比如
A o1=new A();
A o2=o1;
强引用只有当所有对这个对象的所有引用(o1,o2)失效后,new A()的内存才会被回收。
弱引用 (WeakReference)
- 弱引用的对象是在正常情况下,回收器遇到就回收,是被积极回收的对象。
调用system.gc对象可被虚拟机回收
软引用(SoftReference)
- 软引用是仅在内存不够时才回收,属于消极回收。
system.gc对其无效
虚引用(PhantomReference)
- "虚引用"顾名思义,就是形同虚设,与其他几种引用都不同,虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能被垃圾回收。虚引用主要用来跟踪对象被垃圾回收的活动。
应用
- 虚引用、
- 弱引用、
- 软引用
软引用可以加速JVM对垃圾内存的回收速度,可以维护系统的运行安全,防止内存溢出(OutOfMemory)等问题的产生。
都用来引用随时可能被回收的对象,区别是被回收器回收的激烈程度。