a314773862的博客

小小博客

专项:Android内存泄露实践分析

影响

  • 导致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
阅读更多
上一篇IOS 学习笔记
下一篇Java 7之基础 - 强引用、弱引用、软引用、虚引用
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭