Java中的四種引用及其應用場景是什么


1.強引用:

  通常我們使用new操作符創建一個對象時所返回的引用即為強引用。強引用即使當前的內存不足也不會被回收而是由JVM拋出OutOfMemoryError 錯誤。如果想要中斷強引用和某個對象之間的關聯,可以顯式地將引用賦值為null,這樣一來的話,JVM在合適的時間就會回收該對象。

String str = "hello";    // 強引用
str = null;              // 取消強引用

2.軟引用

  內存空間足夠的時候則正常使用,內存空間不足的時候則會被垃圾回收器回收可用於圖片緩存中,內存不足時系統會自動回收不再使用的Bitmap

SoftReference<String> softName = new  SoftReference<>("張三");

3.弱引用

  每當JVM進行垃圾回收的時候不管內存空間是否充足都會將弱引用回收。不過由於垃圾回收器是一個優先級較低的線程,所以並不一定能迅速發現弱引用對象。同樣可用於圖片緩存中,這時候只要Bitmap不再使用就會被回收

WeakReference<String> weakName = new WeakReference<String>("hello");

4.虛引用

  虛引用是Java中最“弱”的引用,在任何時候都可能被垃圾回收器回收。通過它甚至無法獲取被引用的對象,它存在的唯一作用就是當它指向的對象回收時,它本身會被加入到引用隊列中,這樣我們可以知道它指向的對象何時被銷毀。

ReferenceQueue<String> queue = new ReferenceQueue<String>();
PhantomReference<String> pr = new PhantomReference<String>(new String("hello"), queue);

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM