一、引用類型有哪四種
在Java中,引用類型分為四種:
- 強引用(Strong Reference)
- 軟引用(Soft Reference)
- 弱引用(Weak Reference)
- 幻象引用/虛引用(Phantom Reference)
二、Java引用類型有哪些
Java中有很多引用類型,下面列舉幾個與Java四種引用類型相關的:
- ThreadLocal
- WeakHashMap
- PhantomReference
- SoftReference
三、強引用 Strong Reference
強引用是默認的引用類型,如果一個對象有強引用與之關聯,那麼垃圾回收器就不會回收這個對象。強引用的對象可以通過賦值語句或變量傳遞操作來傳遞。強引用通常是指向對象最直接的、最強烈的引用類型。
public class StrongReferenceExample { public static void main(String[] args) { Object object = new Object(); // 強引用 Object nextObject = object; // 強引用 object = null; // 刪除強引用關聯 nextObject = null; // 刪除強引用關聯 } }
四、軟引用 Soft Reference
當一個對象只有軟引用與之關聯時,只有當內存不足時才會回收這個對象。在Java中,軟引用類是SoftReference類,它的作用是引用一些還有用但並非必需的對象。
public class SoftReferenceExample { public static void main(String[] args) { Object object = new Object(); // 強引用 SoftReference
五、弱引用 Weak Reference
當一個對象只有弱引用與之關聯時,它就只能夠生存到下一次垃圾回收之前。在Java中,弱引用類是WeakReference類,它可以用來引用那些有用但並不是必需的對象。
public class WeakReferenceExample { public static void main(String[] args) { Object object = new Object(); // 強引用 WeakReferenceweakReference = new WeakReference (object); // 通過弱引用進行引用 object = null; // 刪除強引用關聯 byte[] bytes = new byte[1024 * 1024 * 10]; // 申請一個佔用大內存對象 System.gc(); // 告訴垃圾回收器進行垃圾回收 System.out.println(weakReference.get()); // 這裡會打印出 null,弱引用已被回收 } }
六、幻象引用 Phantom Reference
幻象引用不會影響對象的生命周期,在Java中,幻象引用類是PhantomReference類。當垃圾回收器決定回收一個對象時,如果發現它有一個幻象引用,那麼就會把這個幻象引用加入到與之關聯的ReferenceQueue對象中。幻象引用總是返回 null。
public class PhantomReferenceExample { public static void main(String[] args) { Object object = new Object(); // 強引用 ReferenceQueuereferenceQueue = new ReferenceQueue(); // 創建ReferenceQueue PhantomReference phantomReference = new PhantomReference(object, referenceQueue); // 創建幻象引用,並與ReferenceQueue關聯 object = null; // 刪除強引用關聯 System.gc(); // 告訴垃圾回收器進行垃圾回收 System.out.println(phantomReference.get()); // 打印 null System.out.println(referenceQueue.poll() == phantomReference); // 打印 true } }
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/188326.html