Java的引用类型简介

87 阅读1分钟

Java的引用类型简介

在Java中,引用类型主要分为强引用、软引用、弱引用和虚引用等几种。

  1. 强引用(Strong Reference): 强引用是最常见的引用类型。被强引用关联的对象不会被垃圾回收器回收。如果一个对象具有强引用,即使系统内存不足,垃圾回收器也不会回收这个对象。一般通过 new 操作符创建的对象都是强引用。

    Object obj = new Object(); // 强引用
    
  2. 软引用(Soft Reference): 被软引用关联的对象在系统内存不足时会被回收。软引用可以用来实现内存敏感的缓存。一般使用 SoftReference 类来创建软引用。

    SoftReference<Object> softRef = new SoftReference<>(new Object());
    
  3. 弱引用(Weak Reference): 被弱引用关联的对象只有在垃圾回收器进行回收时才会被回收。一般使用 WeakReference 类来创建弱引用。

    WeakReference<Object> weakRef = new WeakReference<>(new Object());
    
  4. 虚引用(Phantom Reference): 虚引用是最弱的一种引用关系。无法通过虚引用获取对象的实例,其唯一目的就是在对象被回收时收到一个系统通知。虚引用必须与引用队列(ReferenceQueue)联合使用。一般使用 PhantomReference 类来创建虚引用。

    PhantomReference<Object> phantomRef = new PhantomReference<>(new Object(), referenceQueue);
    

这些引用类型的选择取决于对对象生命周期的要求。强引用的对象生命周期最长,而虚引用的对象生命周期最短。在一些特定的场景中,合理利用不同类型的引用有助于更好地管理内存和资源。