文章目錄
-
- 前言
- Android記憶體優化 - 總結
- Android記憶體優化 - MAT使用
- Android記憶體優化 - LeakCanary2.x使用與部分源碼解析
- 彙總
前言
系統會為每個應用配置設定一定大小的記憶體,具體配置設定多大的記憶體是取決裝置硬體的配置,這個記憶體資源是有限的,如果程式沒有合理管理好記憶體,最終會導緻程式的異常。
這裡指的記憶體是RAM給我們配置設定的大小
記憶體問題具體表現有下面幾種情況:
- 記憶體抖動:在記憶體圖形實時資料中呈鋸齒狀,整個過程在頻繁建立與銷毀回收對象,最終可能會導緻UI上卡頓,嚴重情況下也會造成記憶體溢出
- 記憶體洩漏:不使用的對象沒有被回收掉,在記憶體圖形實時資料中呈傾斜逐漸上升的狀态,可用記憶體會越來越少,最後頻繁GC造成UI卡頓,甚至可能會記憶體洩漏OOM,程式崩潰。
- 記憶體溢出:已使用記憶體與新申請記憶體之和大于系統配置設定記憶體時,就會發生OOM,OOM是記憶體問題最嚴重的情況,整個程式崩潰退出應用。
隻要處理好記憶體抖動與記憶體洩漏的問題,發生記憶體溢出的問題性就很小了,除非長時間建立大量對象的操作無法釋放,比如反序列化解析成大量的實體類,遞歸沒有結束條件等等。
要做記憶體優化,要明白下面幾點
- 哪些對象可以回收
- 什麼時候被回收
- 是如何被回收
這需要了解Java記憶體配置設定、垃圾回收算法與Android記憶體機制等知識
Android記憶體優化 - 總結
Android記憶體優化 - MAT使用
Android記憶體優化 - LeakCanary2.x使用與部分源碼解析
彙總
- Android記憶體優化 - 總結
- Android記憶體優化 - MAT使用
- Android記憶體優化 - LeakCanary2.x使用與部分源碼解析