記憶體洩漏
當某些對象不再被程式所使用,但是這些對象仍然被某些對象所引用着,進而導緻垃圾收集器不能及時釋放它們。
記憶體洩露 指由于疏忽或錯誤造成程式未能釋放已經不再使用的記憶體。
解決辦法:在不需要的時候及時釋放掉資源
記憶體抖動
記憶體抖動 指記憶體頻繁地配置設定和回收
後果
1、頻繁的GC會導緻卡頓
2、嚴重時還會導緻OOM
注:記憶體抖動為什麼會引起OOM呢?
主要原因還是有因為大量小的對象頻繁建立,導緻記憶體碎片,進而當需要配置設定記憶體時,雖然總體上還是有剩餘記憶體可配置設定,而由于這些記憶體不連續,導緻無法配置設定,系統直接就傳回OOM了。
解決方案
1、盡量避免在循環體内建立對象,應該把對象建立移到循環體外
2、避免在View的onDraw()方法裡頻繁地建立對象
3、對于能夠複用的對象,可以使用對象池将它們緩存起來
記憶體溢出
記憶體溢出 指應用申請超過門檻值的記憶體空間
産生原因
1、應用存在記憶體洩露,長時間積累導緻OOM
2、應用的某些邏輯操作瘋狂的消耗掉大量記憶體
解決方案
1、規避記憶體洩漏
2、圖檔進行壓縮顯示或局部顯示