LeakCanary+Mat 内存泄漏检测及修改示例
2022-09-26 本文已影响0人
闫鹏飞写字的地方
通过LeakCanary
获取到内存泄漏信息(可达性分析的链路)
从底部确认是CommonFloorActivity
发生了内存泄漏,沿着链路往上一点点看找出具体原因,GlideScreenTransform
中持有了CommonFloorActivity
的Context
,间接持有了CommonFloorActivity
,导致无法释放CommonFloorActivity
也可以通过Mat
分析
获取到 Heap Dump file
也就是2022-09-22_11-24-51_269.hprof
格式转化一下,Mat
才能读取
示例:
hprof-conv ./原始文件.hprof ./目标文件.hprof
操作
hprof-conv /Users/yanpengfei/Desktop/2022-09-22_11-24-51_269.hprof /Users/yanpengfei/Desktop/temp.hprof
Mat
读取转化后.hprof
文件
点击Histogram
选择排除弱引用和软引用
image.png
找到了GlideScreenTransform
中持有了CommonFloorActivity
的Context
,间接持有了CommonFloorActivity
,导致无法释放CommonFloorActivity