1. 程式人生 > >Android記憶體優化—記憶體洩漏、記憶體抖動、記憶體溢位

Android記憶體優化—記憶體洩漏、記憶體抖動、記憶體溢位

記憶體洩漏

當某些物件不再被程式所使用,但是這些物件仍然被某些物件所引用著,進而導致垃圾收集器不能及時釋放它們。

記憶體洩露 指由於疏忽或錯誤造成程式未能釋放已經不再使用的記憶體。

解決辦法:在不需要的時候及時釋放掉資源

記憶體抖動

記憶體抖動 指記憶體頻繁地分配和回收

後果
1、頻繁的GC會導致卡頓
2、嚴重時還會導致OOM

注:記憶體抖動為什麼會引起OOM呢?
主要原因還是有因為大量小的物件頻繁建立,導致記憶體碎片,從而當需要分配記憶體時,雖然總體上還是有剩餘記憶體可分配,而由於這些記憶體不連續,導致無法分配,系統直接就返回OOM了。

解決方案
1、儘量避免在迴圈體內建立物件,應該把物件建立移到迴圈體外
2、避免在View的onDraw()方法裡頻繁地建立物件
3、對於能夠複用的物件,可以使用物件池將它們快取起來

記憶體溢位

記憶體溢位 指應用申請超過閾值的記憶體空間

產生原因
1、應用存在記憶體洩露,長時間積累導致OOM
2、應用的某些邏輯操作瘋狂的消耗掉大量記憶體

解決方案
1、規避記憶體洩漏
2、圖片進行壓縮顯示或區域性顯示