Java的強引用、軟引用、弱引用和虛引用
- 1. 強引用
- 2. 軟引用
- 3. 弱引用
- 4. 虛引用
- 總結
??Java的強引用、軟引用、弱引用和虛引用可以用來標識GC時判斷對象是否達到回收的條件,下面結合Java代碼看看這四類引用吧。
1. 強引用
是最普通的引用方式,通過new
關鍵字創建對象時所使用的引用。只要強引用存在,垃圾回收器就不會回收
對象。代碼如下:
Object obj = new Object(); // 強引用
2. 軟引用
在內存不足
時,垃圾回收器會回收軟引用指向
的對象。可以通過SoftReference
類來創建軟引用。代碼如下:
SoftReference<Object> softRef = new SoftReference<>(new Object());
Object obj = softRef.get(); // 獲取軟引用指向的對象
3. 弱引用
垃圾回收器在下一次回收時,無論內存是否充足
,都會回收弱引用指向的對象。可以通過WeakReference
類來創建弱引用。代碼如下:
WeakReference<Object> weakRef = new WeakReference<>(new Object());
Object obj = weakRef.get(); // 獲取弱引用指向的對象
4. 虛引用
虛引用主要用于跟蹤對象被垃圾回收器回收
的活動,不能通過虛引用訪問對象。可以通過PhantomReference
類來創建虛引用。代碼如下:
ReferenceQueue<Object> queue = new ReferenceQueue<>();
PhantomReference<Object> phantomRef = new PhantomReference<>(new Object(), queue);
Object obj = phantomRef.get(); // 獲取虛引用指向的對象(始終返回null)
Java4種引用的級別由高到低依次為:
強引用 > 軟引用 > 弱引用 > 虛引用
總結
?? 以上,我們了解了關于Java對象的引用級別:強引用 > 軟引用 > 弱引用 > 虛引用
。
上一篇 Java SPI機制詳解 | 記得點贊收藏哦!!! | 下一篇 理解Java的自定義類加載器ClassLoader看這一篇就夠了!!! |