强引用、软引用、弱引用、幻象引用有什么区别?

2023-05-13 阅读 52

这四种引用都是Java中的引用类型,它们之间的区别如下:

  1. 强引用(Strong Reference):最常见的引用类型,如果一个对象具有强引用,那么垃圾回收器就不会回收它,即使内存不足时也不会回收。例如:Object obj = new Object()。

  2. 软引用(Soft Reference):如果一个对象只具有软引用,那么在内存不足时,垃圾回收器可能会回收它。软引用通常用来实现内存敏感的高速缓存。例如:SoftReference softRef = new SoftReference (obj)。

  3. 弱引用(Weak Reference):如果一个对象只具有弱引用,那么在垃圾回收时,不管内存是否充足,都会回收它。弱引用通常用来实现规范化映射(例如:WeakHashMap)。例如:WeakReference weakRef = new WeakReference (obj)。

  4. 幻象引用(Phantom Reference):如果一个对象只具有幻象引用,那么在垃圾回收时,它不会被自动回收,而是必须通过ReferenceQueue来获取通知,然后进行清理操作。幻象引用通常用来跟踪对象被垃圾回收的状态。例如:PhantomReference phantomRef = new PhantomReference (obj, referenceQueue)。

    更新于 2023年05月20日

                     <div class="article_right" id="js_right">&nbsp;</div>