Android内存泄露自动化链路分析组件Probe
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
大大量量的Activity里里里面面带着大大量量 的Bitmap
基础数据类型增强
GC roots
基础数据类型增强
Y
N
Probe分析流程
hprof D
D
&
S R
D T
S
S
整体结构图
i Al n O pa lb
OP
D
TRh
r
CI
gE
gE
so
S
f
b
gEe
r
m
Mc
O
Tt
gEAla gEAlb
1.背景 2.业内解决方方案 3.问题和策略略 4.案例例 5.总结
对比比实验
• 另一一个实验——在一一个256M阈值OOM的手手机上, 添加特别多200万个小小对象(72字节) 人人造OOM,dump内存,分析 内存快照文文件达到250多M,分析进程占用用内存增 ⻓长很快,在解析就OOM了了
• •
核心心问题
分析占用用内存为什什么这么大大? 内存快照文文件的Instance数量量 正相关!
案例例1 Timer泄漏漏
案例例2 地图没有正确destroy
案例例3 某定位SDK内存泄漏漏
分析进程内存占 用用最高高大大约 100M
案例例4 Bitmap泄漏漏
案例例5 某地图SDK路路线绘制泄漏漏
某地图SDK搜 索路路线绘制泄 漏漏
案例例6 某SDK数据缓存泄漏漏
1.背景 2.业内解决方方案 3.问题和策略略 4.案例例 5.总结
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:基础类型泄漏漏检测不不到
核心心问题
总结
• 适用用于线上环境 • 分析时间快,2min~8min • 占用用内存低,分析进程平均占用用100M • 分析成功率高高,88% • 特别适合追查三方方SDK的内存问题
总结
方方案 针对所有内存溢出 case 适用用于线上环境 自自动化 是否提供泄漏漏点路路径 信息 Leakcanary
否 是 否 是
原始流程
hprof
D
D
D
内存快照文文件解析
hprof
A
计数压缩策略略
GC roots
.
.
计数压缩策略略
G
A A
& &
& &
ห้องสมุดไป่ตู้
A
I
R
C
&
I
&
&
计数补偿策略略
Y
N
问题和策略略
• • •
问题1:链路路分析时间过⻓长 问题2:分析进程占用用内存过大大 问题3:基础类型泄漏漏检测不不到
Bitmap泄漏漏案例例
Android内存泄漏漏自自动化 链路路分析组件——Probe
张毅然/美团点评高高级工工程师
1.背景 2.业内解决方方案 3.问题和策略略 4.案例例 5.总结
背景
• •
内存溢出(OutOfMemory)复现困难 堆栈信息不不能看出内存泄漏漏的根本原因
• •
特别是第三方方SDK的内存问题更更为棘手手 无无法有效获得线上内存泄漏漏的可疑对象
1.背景 2.业内解决方方案 3.问题和策略略 4.案例例 5.总结
业内解决方方案
方方案 针对所有内存溢出 case 适用用于线上环境 自自动化 是否提供泄漏漏点路路径 信息
Leakcanary
否 是 否
否 是 否
是 否 是
是 是 是
MAT分析
预设可怀疑对象方方案
目目标
• • • •
适用用于线上app,分析线上OOM问题 所有的case均能检测分析 分析时间少 分析进程内存空间占用用低,分析进程自自己己不不OOM
否 是 否 是
是 否 是 是
是 是 是 是
MAT分析
预设可怀疑对象方方案
Probe
OutOfMemory分析组件Probe
外卖配送技术团队
Q&A
分析占用用内存为什什么这么大大?
核心心问题
分析占用用内存为什什么这么大大? 内存快照文文件的大大小小正相关?
对比比实验
• 一一个实验——在一一个256M阈值OOM的手手机上,让 一一个成员变量量申请特别大大的一一块内存200多M • 人人造OOM,dump内存,分析 • 内存快照文文件达到250多M,分析进程占用用内存并 不不大大 70M左右