欢迎来到天天文库
浏览记录
ID:52793987
大小:2.18 MB
页数:41页
时间:2020-03-30
《Android内存泄露自动化链路分析组件Probe.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、Android内存泄漏自动化链路分析组件——Probe张毅然/美团点评高级工程师1.背景2.业内解决方案3.问题和策略4.案例5.总结背景•内存溢出(OutOfMemory)复现困难•堆栈信息不能看出内存泄漏的根本原因•特别是第三方SDK的内存问题更为棘手•无法有效获得线上内存泄漏的可疑对象1.背景2.业内解决方案3.问题和策略4.案例5.总结业内解决方案针对所有内存溢出是否提供泄漏点路径方案适用于线上环境自动化case信息Leakcanary否否是是MAT分析是是否是预设可怀疑对象方案否否是是目标•适用于
2、线上app,分析线上OOM问题•所有的case均能检测分析•分析时间少•分析进程内存空间占用低,分析进程自己不OOM1.背景2.业内解决方案3.问题和策略4.案例5.总结问题和策略•OOM时候dump内存•App启动时候,单独开启进程分析问题和策略•问题1:链路分析时间过长•问题2:分析进程占用内存过大•问题3:基础类型泄漏检测不到Dominator&ShallowSize&RetainSize•Dominator支配者——如果从GCroot到达对象Y的路径上,必须经过对象X,那么X就是Y的支配者。查找可疑
3、对象•链路归并查找可疑对象•自适应扩容法问题和策略•问题1:链路分析时间过长•问题2:分析进程占用内存过大•问题3:基础类型泄漏检测不到核心问题分析占用内存为什么这么大?核心问题分析占用内存为什么这么大?内存快照文件的大小正相关?对比实验•一个实验——在一个256M阈值OOM的手机上,让一个成员变量申请特别大的一块内存200多M•人造OOM,dump内存,分析•内存快照文件达到250多M,分析进程占用内存并不大70M左右对比实验•另一个实验——在一个256M阈值OOM的手机上,添加特别多200万个小对象(7
4、2字节)•人造OOM,dump内存,分析•内存快照文件达到250多M,分析进程占用内存增长很快,在解析就OOM了核心问题分析占用内存为什么这么大?内存快照文件的Instance数量正相关!原始流程"(#"'hprof D%$+!D*)D内存快照文件解析"!$A"hprof
5、计数压缩策略GCroots . .计数压缩策略!3(G/<$-&'A/<9&'A&&&&97>65:.65 &'A10,R;809I10C*10="&?2I?2&&计数补偿策略%"&Y#
6、!N' ($问题和策略•问题1:链路分析时间过长•问题2:分析进程占用内存过大•问题3:基础类型泄漏检测不到Bitmap泄漏案例大量的Activity里面带着大量的Bitmap基础数据类型增强GCroots 基础数据类型增强+"'$,!#Y N(-%)*(&)Probe分析流程*!8.*#
7、7D$09hprof D( &/>$,-+SRD$:2?/>$,-+3'T%1=")S<;S整体结构图i!AlB( ):n? O.Apa;-lb "$MFB( OP):MFD(L8TRh@r.=>8、McS,O.TtgEAla;gEAlb1.背景2.业内解决方案3.问题和策略4.案例5.总结案例1Timer泄漏案例2地图没有正确destroy案例3某定位SDK内存泄漏分析进程内存占用最高大约100M案例4Bitmap泄漏案例5某地图SDK路线绘制泄漏某地图SDK搜索路线绘制泄漏案例6某SDK数据缓存泄漏1.背景2.业内解决方案3.问题和策略4.案例5.总结总结•适用于线上环境•分析时间快,2min~8
8、McS,O.TtgEAla;gEAlb1.背景2.业内解决方案3.问题和策略4.案例5.总结案例1Timer泄漏案例2地图没有正确destroy案例3某定位SDK内存泄漏分析进程内存占用最高大约100M案例4Bitmap泄漏案例5某地图SDK路线绘制泄漏某地图SDK搜索路线绘制泄漏案例6某SDK数据缓存泄漏1.背景2.业内解决方案3.问题和策略4.案例5.总结总结•适用于线上环境•分析时间快,2min~8
此文档下载收益归作者所有