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文件进行查找。