Android 内存优化-内存泄漏检测与修复

修复问题背景

 用户反馈在查看大量个股详情之后app变的很卡,内存使用占比比较高,严重的时候会造成OOM。

问题产生原因

项目中存在内存泄漏,导致了内存无法释放。

如何排查?

运用Android studio自带的Profiler进行排查,先看下怎么运用这个工具

 

App运行起来我们可以实时看到App的CPU、Memory、NetWork、Energy等信息,选择要分析的app性能信息,这里选择Memory点进去,生成内存快照,会自动帮我分析出有多少个内存泄漏

 

我们再看下怎么知道这个内存泄漏发生在哪里,以LaunchActivity为例

 

通过上面的图可以看出LaunchActivity被作为变量只有了,很有可能是因为是单例里面的Context也有可能是作为全局的静态变量导致的。

接下来具体列举一下我们本次个股里面发生的内存泄漏

1、Handler导致的内存的泄漏

2、Fragment被强引用引起的内存

3、网络请求库里面bindLifecycle(getLifecycleOwner())错用

4、EventBus以及Sub/Pub模型订阅关系,只有订阅未添加取消订阅

5、把控件作为参数传递到Fragment里面导致互相引用

 

同样以个股详情滑动100只股票为例

优化前:滑动个股详情内存一致暴增,严重时内存过高导致OOM

实测滑动到50只内存到1G,然后产生ANR

 

   优化后:同样的操作,内存基本上稳定在360M左右

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值