IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    Android 内存泄露实践分析

    LengYue\'s Blog发表于 2018-07-06 17:16:07
    love 0
    定义 ​内存泄漏也称作“存储渗漏”,用动态存储分配函数动态开辟的空间,在使用完毕后未释放,结果导致一直占据该内存单元。直到程序结束。(其实说白了就是该内存空间使用完毕之后未回收)即所谓内存泄漏。 内存泄漏形象的比喻是“操作系统可提供给所有进程的存储空间正在被某个进程榨干”,最终结果是程序运行时间越长,占用存储空间越来越多,最终用尽全部存储空间,整个系统崩溃。所以“内存泄漏”是从操作系统的角度来看的。这里的存储空间并不是指物理内存,而是指虚拟内存大小,这个虚拟内存大小取决于磁盘交换区设定的大小。由程序申请的一块内存,如果没有任何一个指针指向它,那么这块内存就泄漏了。 ​ ——来自《百度百科》 影响 导致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四种引用由高到低依次为:强引用 > 软引用 > 弱引用 > 虚引用 表格说明 **复用ConvertView ** 复用详解 对象释放 遵循谁创建谁释放的原则 示例:显示调用clear列表、对象赋空值 分析  原理 Java内存分配机制 Java垃圾回收机制 根本原因 关注堆内存 怎么解决 详见方案 实践分析


沪ICP备19023445号-2号
友情链接