android.app.LoadedApk.mReceivers 内存泄漏
内存泄漏原因
== 总结:注册的广播没有进行注销 ==
原理请自行阅读源码分享,下面提供两个关键方法代码简单说明
1.注册广播

2.注销广播

定位到对应的广播
方法一,逐个广播排查,如果好找的话
方法二,通过分析hprof文件定位
1.通过泄漏的Activity定位到对应的LoadedApk

2.查看对应的LoadedApk的mReceivers

3.找到泄漏的Activity,以及它所注册的广播

请自行了解ArrayMap的数据结构,我这里直接给结论
n = Activity,n+1 = 对应的广播信息。所以我这里就看 4+1 = 5 的信息就可以知道是哪个广播了

图中的"c$a"广播被混淆了,请自行对应mapping文件进行查找。

本文探讨了Android应用中由于未正确注销广播接收器导致的内存泄漏问题。通过两种方法定位内存泄漏的广播,一是逐一排查,二是分析hprof文件。重点讲解了如何从LoadedApk的mReceivers找到泄漏的广播,并强调了ArrayMap数据结构在定位问题中的作用。同时提醒开发者注意混淆可能导致的广播名称识别困难。
1415

被折叠的 条评论
为什么被折叠?



