AlA*_*iri 7 heap android garbage-collection memory-leaks memory-management
我在我的应用程序中遇到随机(内存不足)崩溃,所以我开始分析我的堆.我注意到,如果我从活动A转到活动B,堆增加(由于延迟加载许多图像)从27 MB增加到35 MB.但是,当我完成()活动B返回活动A时,即使使用GC操作,堆大小也保持不变!
令人讨厌的是再次进入活动B再次将堆增加到42 MB.我可以这样做,并且堆只会不断增加.
这是我使用的延迟图像加载库:
LazyList https://github.com/thest1/LazyList
这些是Heap的截图
之前:http://i.stack.imgur.com/7eTzm.png
之后:http://i.stack.imgur.com/txeC6.png
转换的堆转储文件可根据要求提供
UPDATE
从我的调试来看,似乎来自LazyList库的问题,但我仍然不是100%肯定.以下是评论图书馆的人的参考:
我的猜测是您正在泄漏活动(这可能会泄漏它所保存的所有变量)。确保任何需要您传递上下文的操作系统调用都已取消注册,您没有任何对象保存对活动的引用(尤其是通过保存上下文),并且您可以在 onDestroy 中清空所有内容或 onStop(也在所有主要对象中执行此操作)。
如果这还不够,请查看您的 hprof,看看在您终止活动后周围有哪些大对象以及谁持有引用。修复并重复。