强引用
指在程序代码之中普遍存在的引用赋值,即类似 Object obj=new Object()
这种引用关系。任何情况下,只要强引用关系还存在,垃圾收集器就永远不会回收掉被引用的对象
软引用
用来描述一些还有用,但非必须的对象。只被软引用关联着的对象,在系统将要发生内存溢出异常前,会把这些对象列进回收范围之中进行第二次回收,如果这次回收还没有足够的内存,才会抛出内存溢出异常。在 JDK 1.2 版之后提供了 SoftReference 类来实现软引用
弱引用
也是用来描述非必须对象,但是引用强度比软引用更弱,被弱引用关联的对象只能生存到下一次垃圾收集发生为止。当垃圾收集器开始工作,无论当前内存是否足够,都会回收掉只被弱引用关联的对象。在 JDK 1.2 版之后提供了 WeakReference 类来实现弱引用
虚引用
也称为幽灵引用、幻影引用,使用它的唯一目的是为了能在这个对象被收集器回收时收到一个系统通知。在 JDK 1.2 版之后提供了 Phant omReference 类来实现虚引用