android probe 流程,Android内存泄露自动化链路分析组件Probe.pdf

Android 内存泄漏⾃动化

链路分析组件——Probe

张毅然/美团点评⾼级⼯程师

1.背景

2.业内解决⽅案

3.问题和策略

4.案例

5.总结

背景

• 内存溢出(OutOfMemory)复现困难

• 堆栈信息不能看出内存泄漏的根本原因

• 特别是第三⽅SDK的内存问题更为棘⼿

• ⽆法有效获得线上内存泄漏的可疑对象

1.背景

2.业内解决⽅案

3.问题和策略

4.案例

5.总结

业内解决⽅案

针对所有内存溢出 是否提供泄漏点路径

⽅案 适⽤于线上环境 ⾃动化

case 信息

Leakcanary 否 否 是 是

MAT分析 是 是 否 是

预设可怀疑对象⽅案 否 否 是 是

⽬标

• 适⽤于线上app,分析线上OOM问题

• 所有的case均能检测分析

• 分析时间少

• 分析进程内存空间占⽤低,分析进程⾃⼰不OOM

1.背景

2.业内解决⽅案

3.问题和策略

4.案例

5.总结

问题和策略

• OOM时候dump内存

• App启动时候,单独开启进程分析

问题和策略

• 问题1:链路分析时间过⻓

• 问题2 :分析进程占⽤内存过⼤

• 问题3 :基础类型泄漏检测不到

Dominator & Shallow Size &

Retain Size

• Dominator ⽀配者—— 如果从GC root到达对象Y的

路径上,必须经过对象X ,那么X就是Y的⽀配者。

查找可疑对象

• 链路归并

查找可疑对象

• ⾃适应扩容法

问题和策略

• 问题1:链路分析时间过⻓

• 问题2 :分析进程占⽤内存过⼤

• 问题3 :基础类型泄漏检测不到

核⼼问题

分析占⽤内存为什么这么⼤?

核⼼问题

分析占⽤内存为什么这么⼤?

内存快照⽂件的⼤⼩正相关?

对⽐实验

• ⼀个实验——在⼀个256M阈值OOM的⼿机上,让

⼀个成员变量申请特别⼤的⼀块内存200多M

• ⼈造OOM,dump内存,分析

• 内存快照⽂件达到250多M,分析进程占⽤内存并

不⼤ 70M左右

对⽐实验

• 另⼀个实验——在⼀个256M阈值OOM的⼿机上,

添加特别多200万个⼩对象(72字节)

• ⼈造OOM,dump内存,分析

• 内存快照⽂件达到250多M,分析进程占⽤内存增

⻓很快,在解析就OOM了

核⼼问题

分析占⽤内存为什么这么⼤?

内存快照⽂件的Instance数量

正相关!

原始流程

hprof

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值