LeakCanary+Mat 内存泄漏检测及修改示例

2022-09-26  本文已影响0人  闫鹏飞写字的地方

通过LeakCanary获取到内存泄漏信息(可达性分析的链路)

image.png

从底部确认是CommonFloorActivity发生了内存泄漏,沿着链路往上一点点看找出具体原因,GlideScreenTransform中持有了CommonFloorActivityContext,间接持有了CommonFloorActivity,导致无法释放CommonFloorActivity

也可以通过Mat分析

image.png

获取到 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文件

image.png

点击Histogram

image.png image.png

选择排除弱引用和软引用


image.png

找到了GlideScreenTransform中持有了CommonFloorActivityContext,间接持有了CommonFloorActivity,导致无法释放CommonFloorActivity

image.png
上一篇下一篇

猜你喜欢

热点阅读