天天看點

Android性能優化 - 記憶體優化

文章目錄

    • 前言
    • Android記憶體優化 - 總結
    • Android記憶體優化 - MAT使用
    • Android記憶體優化 - LeakCanary2.x使用與部分源碼解析
    • 彙總

前言

系統會為每個應用配置設定一定大小的記憶體,具體配置設定多大的記憶體是取決裝置硬體的配置,這個記憶體資源是有限的,如果程式沒有合理管理好記憶體,最終會導緻程式的異常。

這裡指的記憶體是RAM給我們配置設定的大小

記憶體問題具體表現有下面幾種情況:

  • 記憶體抖動:在記憶體圖形實時資料中呈鋸齒狀,整個過程在頻繁建立與銷毀回收對象,最終可能會導緻UI上卡頓,嚴重情況下也會造成記憶體溢出
  • 記憶體洩漏:不使用的對象沒有被回收掉,在記憶體圖形實時資料中呈傾斜逐漸上升的狀态,可用記憶體會越來越少,最後頻繁GC造成UI卡頓,甚至可能會記憶體洩漏OOM,程式崩潰。
  • 記憶體溢出:已使用記憶體與新申請記憶體之和大于系統配置設定記憶體時,就會發生OOM,OOM是記憶體問題最嚴重的情況,整個程式崩潰退出應用。

隻要處理好記憶體抖動與記憶體洩漏的問題,發生記憶體溢出的問題性就很小了,除非長時間建立大量對象的操作無法釋放,比如反序列化解析成大量的實體類,遞歸沒有結束條件等等。

要做記憶體優化,要明白下面幾點

  • 哪些對象可以回收
  • 什麼時候被回收
  • 是如何被回收

這需要了解Java記憶體配置設定、垃圾回收算法與Android記憶體機制等知識

Android記憶體優化 - 總結

Android性能優化 - 記憶體優化

Android記憶體優化 - MAT使用

Android性能優化 - 記憶體優化

Android記憶體優化 - LeakCanary2.x使用與部分源碼解析

Android性能優化 - 記憶體優化

彙總

  • Android記憶體優化 - 總結
  • Android記憶體優化 - MAT使用
  • Android記憶體優化 - LeakCanary2.x使用與部分源碼解析