gpt4 book ai didi

Android应用程序内存堆不断增长

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:09:04 25 4
gpt4 key购买 nike

我的应用程序经常发生随机(内存不足)崩溃,所以我开始分析我的堆。我注意到,如果我从 Activity A 转到 Activity B,堆会从 27 MB 增加(由于延迟加载许多图像)到 35 MB。但是,当我 finish() Activity B 返回到 Activity A 时,即使进行 GC 操作,堆大小也保持不变!

烦人的是,再次进入 Activity B 会将堆增加到 42 MB。我可以多次这样做,堆只会不断增加。

这是我正在使用的惰性图片加载库:

惰性列表 https://github.com/thest1/LazyList

这些是堆的截图

之前:http://i.stack.imgur.com/7eTzm.png

之后:http://i.stack.imgur.com/txeC6.png

转换后的堆转储文件可应要求提供

更新

从我的调试来看,这似乎是 LazyList 库的问题,但我仍然不是 100% 确定。这是对图书馆评论的人的引用:

https://github.com/thest1/LazyList/issues/20

最佳答案

我的猜测是您正在泄露 Activity (这可能会泄露它持有的所有变量)。确保任何要求您传递上下文的操作系统调用都已取消注册,您没有任何对象持有对 Activity 的引用(尤其是通过持有上下文)并且您在 onDestroy 中清空了所有可能的内容或 onStop(在所有主要对象中也这样做)。

如果这还不够,请查看您的 hprof,看看在您终止 Activity 之后周围有哪些大对象以及谁持有引用。修复并重复。

关于Android应用程序内存堆不断增长,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14528884/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com