【JVM之美】引用類型

無論是通過引用計數算法判斷對象的引用數量,還是通過可達性分析算法判斷對象是否可達,判斷對象是否被回收都與引用有關,
java具有四種強度不同的引用類型

1、強引用

被強引用關聯的對象不會被回收,
使用new一個新對象的方式來創建強引用

Object obj = new Object();

2、軟引用

被軟引用關聯的對象只有在內存不夠的情況下才會被回收
使用SoftReference類來創建軟引用

Object obj = new Object();
SoftReference<Object> sf = new SoftReference<Object>(obj);
obj = null;//是對象只被軟引用關聯

3、弱引用

被軟引用關聯的對象一定會被回收,也就就是說它只能存活到下一次垃圾回收發生之前、
使用WeakReference類來實現弱引用
//弱引用

Object obj2 = new Object();
WeakReference<Object> weakReference = new WeakReference<Object>(obj2);
obj2 = null;

4、虛引用

又稱爲幽靈引用或者幻影引用,一個對象是否有虛引用的存在,完全不會對其生存時間構成影響,也無法通過虛引用獲取一個對象
爲一個對象設置虛引用關聯的唯一目的就是能在這個對象被回收時能收到一個系統通知。
使用PhantomReference來實現虛引用

//虛引用
Object obj3 = new Object();
PhantomReference<Object> phantomReference = new PhantomReference<Object>(obj1);
obj3 = null;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章