android oom 日志分析,android内存泄漏 OOM查找总结

本篇文章已授权微信公众号 guolin_blog (郭霖)独家发布

前言

先通俗理解下内存泄漏,内存溢出,OOM,GC回收这几个概念。

把app的堆内存空间想成了一个杯子,内存就是里面的水。

当你的app启动后,系统会分配给app一个堆空间,起始不会很大比如是32M(根据你的app启动时的内存申请为准)

ed88b12cc65e

image.png

随着程序的运行对象的创建越来越多,系统不断加内存分配:32M -> 64M -> ...

而GC回收则会定时扫描内存,发现不被引用的对象即可回收。

正常来说你的app堆内存会有升有降。

此时如果有某个Activity持有某个引用,在onDestroy时还不把这个引用设为null,那么返回进入退出这个界面,Activity就会创建很多次从而存在多个实例,导致堆内存直升不降!这就叫做内存泄漏。

当用户重复这个操作或者有多个不同Activity内存泄漏时,app运行一段时间堆内存超过系统规定的最大值 heapSize,杯子满了就会发现内存溢出(OOM),app崩溃。

关键点

通过上面这个例子,我们知道查找内存泄漏有如下几点关键点:

如何知道你的app上限值heapSize是多少

什么情况导致无法GC

怎么复现是哪个界面内存泄漏

下面通过一个实例来演示,如何借助AndroidStudio查找内存泄漏:

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值