什麼是強引用?
比如Person p = new Person();或者HashMap<String,Bitmap> mHashMap = new HashMap<>();
這種我們把它稱之為強引用。預設的情況都是強引用,垃圾回收機制不會回收
特點:
1、當沒有變量引用時,就會被垃圾回收機制回收掉。如果有變量引用,直到程式崩潰,垃圾回收機制也不會回收。
什麼是軟引用?
SoftReference(常用)
垃圾回收機制會考慮回收
SoftReference 是軟引用對象,用其包裝Bitmap對象是為了防止圖檔數量增多時出現OOM異常,實作當系統記憶體不足時可以将當期的記憶體緩存釋放掉,以此防止出現記憶體溢出的現象
特點:
1、垃圾回收線程運作了,但是不一定會回收。但是如果出現記憶體不足或者程式崩潰時會将目前的軟引用回收掉。
什麼是弱引用?
WeakReference (常用)
弱引用其實也是有引用的,隻不過比較虛,雖然引用和對象建立了連接配接,但是這個連接配接不是很穩定,随時都可能斷掉,當記憶體不夠時将此引用回收掉。垃圾回收器僅次于虛引用将其回收掉
特點:
1、垃圾回收線程一運作就會将目前的弱引用回收掉
什麼是虛引用?
PhantomReference(不常用)
垃圾回收器會優先将其回收掉
針對Android系統的緩存機制:LruCache
總結: