俗話說:"說不如做,看書不如把代碼敲一遍。"對於三種常用的引用概念,本人還是覺得用代碼說話比較實在。好,說幹就幹!
1. 強引用,有人在引用我,我就不能被刪除。如下:

執行以下代碼,A12沒有被回收,因此B12引用了A12。:

把注釋去掉,A12回收了。
2. 軟引用,沒有強引用的情況下,要等到記憶體不足的時候才會釋放。
JVM參數:-Xms5M -Xmx5M

輸出為:A12::finalize,null
下圖中,是不會被回收的,因為記憶體還足夠。

3. 弱引用,沒有強引用的情況下,馬上回收。

网友评论