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

转载 2016年08月31日 10:45:36

影响

  • 导致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

相关文章推荐

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

今天看到一篇关于Android 内存泄露实践分析的文章,感觉不错,讲的还算详细,mark到这里。原文发表于:Testerhome;作者:ycwdaaaa ; 原文链接:https://testerho...

Android 内存泄露实践分析

出自: http://wetest.qq.com/lab/view/161.html?from=adsout_qqtips_past2&sessionUserType=BFT.PARAMS.1991...
  • niu0147
  • niu0147
  • 2016年09月18日 17:30
  • 692

Android 内存泄露实践分析

定义 ​内存泄漏也称作“存储渗漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。(其实说白了就是该内存空间使用完毕之后未回收)即所谓内存泄漏。...

android 内存泄露 分析方法

  • 2013年09月15日 19:35
  • 4.77MB
  • 下载

android系统分析内存泄露测试

  • 2011年08月04日 01:25
  • 3.2MB
  • 下载

GC可达性实践-内存泄露分析

GC可达性
  • wfeii
  • wfeii
  • 2017年03月08日 12:45
  • 785

Android 内存泄露原因分析

  • 2013年09月16日 21:30
  • 145KB
  • 下载

Android 内存泄露 Mat工具分析

  • 2013年09月16日 21:36
  • 5.75MB
  • 下载

Android中使用Thread造成内存泄露的分析和解决

Thread 内存泄露线程也是造成内存泄露的一个重要的源头。线程产生内存泄露的主要原因在于线程生命周期的不可控。看一下下面是否存在问题 public class ThreadActivity e...
  • jdsjlzx
  • jdsjlzx
  • 2016年05月13日 00:08
  • 4601

Android 内存泄露

  • 2015年03月13日 11:52
  • 77KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:专项:Android内存泄露实践分析
举报原因:
原因补充:

(最多只允许输入30个字)