內存優化的絕對大頭就是 bitmap ,這篇文章中夾帶了大量的關于 bitmap 的部分。
寫這篇文章的初衷是因為我在學習 Glide 和 Fresco 這2個圖片加載庫時,其對內存緩存的處理和優化,我發現其中的知識點很多,而且還牽扯出 app 的內存優化出來了。我找的資料很多,期中有一些比較不錯的,這里我記錄下,方便大家學習,內存優化這塊是在太重要了,而且容易混,資料也不好找
對于 Bitmap 來說,5.0 之前可以使用獨立于虛擬機的共享內存,不占 app 的堆內存控件。對于 5.0 之后,Bitmap 就使用 java 堆內存優化技術了(其實還是之前的 inBitmap),所有的 Bitmap 存儲在 對內存中,但是只緩存當前屏幕正在顯示的 Bitmap ,屏幕滑動新的 Bitmap 使用對內存中 Bitmap 不再顯示被回收的內存部分,并且不只是只使用內存空間而且 Bitmap 對象本身也是復用的。看著很好,但是有人說這個就是一廂情愿,實際效果一般。
對于共享內存可以看:
對于 bitmap 可以看:
內存管理的基礎知識看:
對于內存優化的可以看:
- android app性能優化大匯總(內存性能優化)
-
Android 內存優化總結&實踐
強烈建議,里面很多優秀文章的鏈接 - Android性能優化(四)之內存優化實戰