長話短說-再談強引用、弱引用、虛引用
2017-07-27 本文已影响16人
小小帽2010
俗話說:"說不如做,看書不如把代碼敲一遍。"對於三種常用的引用概念,本人還是覺得用代碼說話比較實在。好,說幹就幹!
1. 強引用,有人在引用我,我就不能被刪除。如下:
![](https://img.haomeiwen.com/i6388572/6b5a07f1c7e67e13.jpg)
執行以下代碼,A12沒有被回收,因此B12引用了A12。:
![](https://img.haomeiwen.com/i6388572/32d06873e6d4044a.jpg)
把注釋去掉,A12回收了。
2. 軟引用,沒有強引用的情況下,要等到記憶體不足的時候才會釋放。
JVM參數:-Xms5M -Xmx5M
![](https://img.haomeiwen.com/i6388572/1a393254e77124e2.jpg)
輸出為:A12::finalize,null
下圖中,是不會被回收的,因為記憶體還足夠。
![](https://img.haomeiwen.com/i6388572/917b30234835ae3b.jpg)
3. 弱引用,沒有強引用的情況下,馬上回收。
![](https://img.haomeiwen.com/i6388572/27accf86ffe73536.jpg)