影响
- 导致OOM
- 糟糕的用户体验
- 鸡肋的App存活率
成效
- 内存泄露是一个持续的过程,随着版本的迭代,效果越明显
- 由于某些原因无法改善的泄露(如框架限制),则尽量降低泄露的内存大小
- 内存泄露实施后的版本,一定要验证,不必马上推行到正式版,可作为beta版持续观察是否影响/引发其他功能/问题
内存泄露实施后,项目的收获:
- OOM减少30%以上
- 平均使用内存从80M稳定到40M左右
- 用户体验上升,流畅度提升
- 存活率上升,推送到达率提升
类型
- IO
- FileStream
- Cursor
- Bitmap
-
Context
- 单例
- Callback
-
Service
- BraodcastReceiver
- ContentObserver
-
Handler
-
Thread
技巧
-
慎用Context
- Context概念
- 四大组件Context和Application的context使用参见下表
-
善用Reference
- Java引用介绍
- Java四种引用由高到低依次为:强引用 > 软引用 > 弱引用 > 虚引用
- 表格说明
类型 垃圾回收时间 生存时间 强引用 永远不会 JVM停止运行时终止 软引用 内存不足时 内存不足时终止 弱引用 垃圾回收时 垃圾回收时终止 虚引用 垃圾回收时 垃圾回收时终止 -
复用ConvertView
-
对象释放
- 遵循谁创建谁释放的原则
- 示例:显示调用clear列表、对象赋空值
转自:https://testerhome.com/topics/5822