影響
- 導緻OOM
- 糟糕的使用者體驗
- 雞肋的App存活率
成效
- 記憶體洩露是一個持續的過程,随着版本的疊代,效果越明顯
- 由于某些原因無法改善的洩露(如架構限制),則盡量降低洩露的記憶體大小
- 記憶體洩露實施後的版本,一定要驗證,不必馬上推行到正式版,可作為beta版持續觀察是否影響/引發其他功能/問題
記憶體洩露實施後,項目的收獲:
- OOM減少30%以上
- 平均使用記憶體從80M穩定到40M左右
- 使用者體驗上升,流暢度提升
- 存活率上升,推送到達率提升
類型
- IO
- FileStream
- Cursor
- Bitmap
- Context
- 單例
- Callback
- Service
- BraodcastReceiver
- ContentObserver
- Handler
- Thread
技巧
- 慎用Context
- Context概念
- 四大元件Context和Application的context使用參見下表
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiInBnauYWYxUWM1UjYlRWM3MmYhNTYjFjMzkTY2QjZlNWO2cTZvwlNxAjMvw1b09Gaw9CXt92YuUWbvhmclR3clR3Lc9CX6MHc0RHaiojIsJye.jpg)
- 善用Reference
- Java引用介紹
- Java四種引用由高到低依次為:強引用 > 軟引用 > 弱引用 > 虛引用
- 表格說明
類型 垃圾回收時間 生存時間 強引用 永遠不會 JVM停止運作時終止 軟引用 記憶體不足時 記憶體不足時終止 弱引用 垃圾回收時 垃圾回收時終止 虛引用 垃圾回收時 垃圾回收時終止 - 複用ConvertView
- 複用詳解
- 對象釋放
- 遵循誰建立誰釋放的原則
- 示例:顯示調用clear清單、對象賦空值
轉自:https://testerhome.com/topics/5822