洛陽公司做網(wǎng)站近幾天發(fā)生的新聞大事
🌈hello,你好鴨,我是Ethan,一名不斷學(xué)習(xí)的碼農(nóng),很高興你能來閱讀。
??目前博客主要更新Java系列、項目案例、計算機(jī)必學(xué)四件套等。
🏃人生之義,在于追求,不在成敗,勤通大道。加油呀!
🔥個人主頁:Ethan Yankang
🔥專欄:面試八股文||Java項目
🔥本篇概覽:Java中的強(qiáng)、弱、虛、軟引用詳解
目錄
3.7 強(qiáng)引用、軟引用、弱引用、虛引用的區(qū)別?
3.7.1 強(qiáng)引用
3.7.2 軟引用
3.7.3 弱引用
3.7.4 虛引用
3.7 強(qiáng)引用、軟引用、弱引用、虛引用的區(qū)別?
難易程度:☆☆☆☆
出現(xiàn)頻率:☆☆☆
3.7.1 強(qiáng)引用
強(qiáng)引用:只有所有 GC Roots 對象都不通過【強(qiáng)引用】引用該對象,該對象才能被垃圾回收
User user = new User();
3.7.2 軟引用
軟引用:僅有軟引用引用該對象時,在垃圾回收后,內(nèi)存仍不足時會再次出發(fā)垃圾回收
User user = new User(); SoftReference softReference = new SoftReference(user);
3.7.3 弱引用
弱引用:僅有弱引用引用該對象時,在垃圾回收時,無論內(nèi)存是否充足,都會回收弱引用對象
User user = new User(); WeakReference weakReference = new WeakReference(user);
延伸話題:ThreadLocal內(nèi)存泄漏問題
ThreadLocal用的就是弱引用,看以下源碼:
static class Entry extends WeakReference<ThreadLocal<?>> {Object value; ?Entry(ThreadLocal<?> k, Object v) {super(k);value = v; //強(qiáng)引用,不會被回收} }
Entry
的key是當(dāng)前ThreadLocal,value值是我們要設(shè)置的數(shù)據(jù)。
WeakReference
表示的是弱引用,當(dāng)JVM進(jìn)行GC時,一旦發(fā)現(xiàn)了只具有弱引用的對象,不管當(dāng)前內(nèi)存空間是否足夠,都會回收它的內(nèi)存。但是value
是強(qiáng)引用,它不會被回收掉。
ThreadLocal使用建議:使用完畢后注意調(diào)用清理方法。
3.7.4 虛引用
虛引用:必須配合引用隊列使用,被引用對象回收時,會將虛引用入隊,由 Reference Handler 線程調(diào)用虛引用相關(guān)方法釋放直接內(nèi)存
?
💖💖💖💖💖???????💖???????💖???????💖???????💖???????💖💖💖💖💖???????💖???????💖???????💖???????💖??????
熱門專欄推薦
???????
🌈🌈計算機(jī)科學(xué)入門系列? ? ? ? ? ? ? ? ? ? ?關(guān)注走一波💕💕
🌈🌈CSAPP深入理解計算機(jī)原理? ? ? ??關(guān)注走一波💕💕
🌈🌈微服務(wù)項目之黑馬頭條? ? ? ? ? ? ? ?? 關(guān)注走一波💕💕
🌈🌈redis深度項目之黑馬點評? ? ? ? ? ??關(guān)注走一波💕💕
🌈🌈Java面試八股文系列專欄? ? ? ? ? ? 關(guān)注走一波💕💕
🌈🌈算法leetcode+劍指offer??? ? ? ? ? ? ?關(guān)注走一波💕💕
📣非常感謝你閱讀到這里,如果這篇文章對你有幫助,希望能留下你的點贊👍 關(guān)注? 分享👥 留言💬thanks!!!
📚愿大家都能學(xué)有所得,功不唐捐!