面试题总结——各种引用(强引用、软引用、弱引用、虚引用)

在Java1.2之后,Java对引用的概念进行了扩充,将引用分为强引用、软引用、弱引用、虚引用4种,这四种引用强度一次逐渐减弱。

  1. 强引用:程序中普遍存在,类似“Object obj = new Object()”,只要强引用还存在,垃圾回收器永远不会回收掉引用对象。

  2. 软引用(SoftReference):描述一些还有用但是非必需的对象,对于软引用关联的对象,在系统发生内存溢出异常之前,将会把这些对象列进回收范围之中进行二次回收。如果这次回收还没有足够的内存,才会抛出内存异常,

  3. 弱引用(WeakReference):也是用来描述非必需对象,但它的强度比软引用更弱一些,被引用的对象只能生存到下一次垃圾收集发生之前,当垃圾收集工作时,无论当前内存是否走足够,都会回收被弱引用关联的对象。

  4. 虚引用(PhantomReference):它是最弱的一种引用,一个对象是有虚引用的存在,完全不会对其生存时间构成影响,已无法通过虚引用来取得一个对象实例。为一个对象设置虚引用关联的唯一目的就是能在和这个对象被收集器回收的时候收到一个系统通知。

你可能感兴趣的:(面试题)