java引用類型

強引用

  • M m = new M();
  • 沒有任何引用指向該對象時, 該對象就能被回收,最常用的引用

軟引用

  • SoftReference<byte[]> m = new SoftReference<>(new byte[1024]); SoftReference 軟引用 byte 數(shù)組
  • 內存不足及回收,常用于緩存

弱引用

  • WeakReference<M> m = new java.lang.ref.WeakReference<>(new M());
  • 垃圾回收器看到即回收, 用于ThreadLocal等

虛引用

  • java.lang.ref.PhantomReference<M> m = new java.lang.ref.PhantomReference<>(new M(),QUEUE);
  • 關聯(lián)堆外內存,隨時能被回收,無法被get,被回收時自動存入隊列,用于 管理堆外內存(NIO等)

ThreadLocal 為什么使用弱引用

  • 防止內存泄露
  • ThreadLocal 以自身為 key,T為value 存儲在 ThreadLocalMap中 (弱引用)
  • ThreadLocalMap 存儲在 Thread中, Thread 存在于線程池中,因此,強引用下 ThreadLocal 永遠可達,永遠不會被回收
  • 在線程中,有對象使用 ThreadLocal 時(強引用) ,也不會被回收,因此,不會被誤回收
  • ThreadLocal 雖然是弱引用,但是ThreadLocal僅作為KEY,因此,如果沒有顯示調用remove,v 的刪除會在set時,resize 方法中被清除
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • JAVA的引用類型 強引用(Strong Reference)強引用是指在程序代碼中普遍存在的,類似“Object...
    tylorsenna閱讀 400評論 0 0
  • Java有四種引用類型,strongreference,softreference,weakreference,p...
    alexpdh閱讀 324評論 0 0
  • 導讀 移動開發(fā)知識體系總章(Java基礎、Android、Flutter) 基本數(shù)據(jù)類型 引用類型 強引用(Fin...
    彭空空閱讀 4,149評論 0 3
  • 概述 java.lang.ref 類庫包含一組類,為垃圾回收提供了更大的靈活性。 java.lang.ref 有三...
    bing__chen閱讀 485評論 0 2
  • Java引用概述 StrongReference(強引用) 不存在這個類 默認實現(xiàn) Java.lang.ref提供...
    Gxgeek閱讀 563評論 0 2

友情鏈接更多精彩內容