【面试干货】Java中的四种引用类型:强引用、软引用、弱引用和虚引用

06-27 1388阅读

【面试干货】Java中的四种引用类型:强引用、软引用、弱引用和虚引用

  • 1、强引用(Strong Reference)
  • 2、软引用(Soft Reference)
  • 3、弱引用(Weak Reference)
  • 4、虚引用(Phantom Reference)
  • 5、总结

    💖The Begin💖点点关注,收藏不迷路💖

    在Java中,除了我们常见的强引用(Strong Reference)外,还有三种引用类型:软引用(Soft Reference)、弱引用(Weak Reference)和虚引用(Phantom Reference)。它们都是Java对象引用关系中的一部分,每种引用类型在Java内存管理和垃圾回收中都扮演着不同的角色。

    1、强引用(Strong Reference)

    强引用 是Java中最普遍的一种引用方式。当一个对象具有强引用时,垃圾回收器永远不会回收它,即使内存空间不足。这种引用方式保证了对象在生命周期内的稳定性。

    示例代码:

    String s = new String("abc"); // s是"abc"对象的强引用
    

    2、软引用(Soft Reference)

    软引用 用于描述还有用但非必须的对象。在内存足够的情况下,软引用的对象不会被回收;但当内存不足时,软引用的对象会被垃圾回收器回收。软引用通常用于实现内存敏感的高速缓存。

    示例代码:

    SoftReference softRef = new SoftReference(new String("abc")); // softRef是"abc"对象的软引用
    

    软引用可以和引用队列(ReferenceQueue)联合使用,当软引用的对象被垃圾回收时,JVM会将这个软引用加入到与之关联的引用队列中。

    3、弱引用(Weak Reference)

    弱引用 与软引用类似,但具有更短的生命周期。当垃圾回收器扫描到只持有弱引用的对象时,无论当前内存是否足够,都会回收该对象的内存。弱引用通常用于实现一些不影响应用程序正常运行的缓存。

    示例代码:

    WeakReference weakRef = new WeakReference(new String("abc")); // weakRef是"abc"对象的弱引用
    

    4、虚引用(Phantom Reference)

    虚引用 是所有引用类型中最“弱”的一种。一个对象只持有虚引用时,它几乎与没有任何引用一样,随时可能被垃圾回收器回收。虚引用主要用于跟踪对象被垃圾回收器的活动,通常与引用队列(ReferenceQueue)一起使用。

    示例代码:

    PhantomReference phantomRef = new PhantomReference(new String("abc"), referenceQueue); // phantomRef是"abc"对象的虚引用
    

    当垃圾回收器准备回收一个对象时,如果发现它还有虚引用,就会在回收对象的内存之前,把这个虚引用加入到与之关联的引用队列中。

    5、总结

    1、强引用:最常见的引用类型,垃圾回收器不会回收强引用的对象。

    2、软引用:用于描述非必须但有用的对象,内存不足时会被回收。

    3、弱引用:比软引用更“弱”的引用类型,无论内存是否足够,垃圾回收器都会回收弱引用的对象。

    4、虚引用:最“弱”的引用类型,用于跟踪对象被垃圾回收器的活动,必须和引用队列一起使用。

    【面试干货】Java中的四种引用类型:强引用、软引用、弱引用和虚引用

    💖The End💖点点关注,收藏不迷路💖
VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]