1. 程式人生 > >三級緩存底層實現

三級緩存底層實現

回收 sha 設置 不同 弱引用 before 子類 bsp .com

韓夢飛沙 韓亞飛 [email protected] yue31313 han_meng_fei_sha

Lrucache底層實際是維護的一個linkedHashMap集合(他是hashmap的一個子類,可以保證存入和取出順序的集合,與hashmap不同的是他是一個雙向鏈表從Android2.3以後,系統GC操作更加頻繁,所以軟引用和弱引用的資源很容易被回收。Android的結構,內部會定義兩個屬性分別為before和after,用於記錄元素的位置;而haspmap是一個單向的鏈表結構),他有一個關鍵的方法就是在我們向lrucache中存儲元素的時候,會先去將該元素所占空間大小與lrucache中所有元素的所占空間求和,然後和我們設置的最大可用存儲內存進行比較,如果超過我們設置的最大值,就會將最近最少使用的元素刪除以騰挪空間,每當我們獲取元素時,會將原位置的元素進行刪除,然後重新在表頭將獲取的元素進行插入。

三級緩存底層實現