天天看點

JAVA中的強引用、軟引用、弱引用、虛引用

什麼是強引用?

              比如Person p = new Person();或者HashMap<String,Bitmap> mHashMap = new HashMap<>();

這種我們把它稱之為強引用。預設的情況都是強引用,垃圾回收機制不會回收

             特點:

                   1、當沒有變量引用時,就會被垃圾回收機制回收掉。如果有變量引用,直到程式崩潰,垃圾回收機制也不會回收。

什麼是軟引用?

              SoftReference(常用)

              垃圾回收機制會考慮回收

              SoftReference 是軟引用對象,用其包裝Bitmap對象是為了防止圖檔數量增多時出現OOM異常,實作當系統記憶體不足時可以将當期的記憶體緩存釋放掉,以此防止出現記憶體溢出的現象

            特點:

                 1、垃圾回收線程運作了,但是不一定會回收。但是如果出現記憶體不足或者程式崩潰時會将目前的軟引用回收掉。

什麼是弱引用?

              WeakReference (常用)

            弱引用其實也是有引用的,隻不過比較虛,雖然引用和對象建立了連接配接,但是這個連接配接不是很穩定,随時都可能斷掉,當記憶體不夠時将此引用回收掉。垃圾回收器僅次于虛引用将其回收掉

            特點:

                   1、垃圾回收線程一運作就會将目前的弱引用回收掉

什麼是虛引用?

              PhantomReference(不常用)

             垃圾回收器會優先将其回收掉

針對Android系統的緩存機制:LruCache

總結:

繼續閱讀