java中弱引用知識學習WeakHashMap、WeakReference

先佔個坑,今天因爲項目需求所以想到了java中的弱引用特性。

首先什麼是弱引用?

Object a = new Object();

Object b = a;

比如上面的代碼,b就是a的強引用。當我們對a變量進行修改時,b對應的也會發生變化。並且當GC想要回收a變量所佔用的內存時,會因爲b持有了a的強引用,導致對a的內存回收失敗,進而導致內存泄漏。

所謂弱引用,就是用來解決這個問題的。

Object tmp = new Object();
WeakReference<Object> weakReference = new WeakReference<>(tmp);
weakReference.get();//如果此方法爲空,說明tmp已經被GC回收

上方的代碼就是典型的弱引用使用示例。當我們使用弱引用訪問對象時,可以獲得與強引用一樣的效果,但當tmp對象需要被GC回收時,不會因爲weakReference持有tmp的引用而導致回收失敗。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章