Java虚拟机中有四种引用类型,它们分别是:

  1. 强引用(Strong Reference):

    • 强引用是最普通的引用类型。当一个对象被强引用关联时,它就不会被垃圾回收器回收,即使内存不足时也不会回收。大多数情况下,我们使用的都是强引用。
    Object obj = new Object(); // 强引用
    
  2. 软引用(Soft Reference):

    • 软引用用于描述一些还有用但非必需的对象。当系统内存充足时,软引用的对象不会被回收;当系统内存不足时,垃圾回收器可能会回收软引用的对象。软引用通常用于实现缓存策略。
    SoftReference<Object> softRef = new SoftReference<>(new Object()); // 软引用
    
  3. 弱引用(Weak Reference):

    • 弱引用用于描述非必需的对象。当垃圾回收器工作时,无论内存是否充足,弱引用的对象都有可能被回收。弱引用通常用于实现一些缓存机制。
    WeakReference<Object> weakRef = new WeakReference<>(new Object()); // 弱引用
    
  4. 虚引用(Phantom Reference):

    • 虚引用是最弱的引用类型,几乎没有直接的访问价值。虚引用的主要作用是在对象被回收时接收一个系统通知,可以在对象被回收前或者被回收后执行一些操作。虚引用必须与引用队列(ReferenceQueue)一起使用。
    PhantomReference<Object> phantomRef = new PhantomReference<>(new Object(), referenceQueue); // 虚引用
    

这些引用类型主要用于帮助程序员更灵活地控制对象的生命周期,实现一些特定的需求,如缓存、对象的后处理等。在使用不同的引用类型时,需要根据具体的业务场景和需求来选择合适的引用类型。

Was this helpful?

0 / 0

发表回复 0

Your email address will not be published.