在我的应用程序有两个活动,即A和B.的WebView吃了太多的内存
活动答:
它有一个短暂显示有关项目的信息列表。当点击了某个项目,它加载活动B.
活动B:
它有两个网站的观点和几个列表视图。活动顶部被标题网页视图占用。活动的下半部分有选项卡主机,它在第一个选项卡中托管第二个Web视图,其余选项卡每个托管一个列表视图。
问题:
当用户从导航到显著B,堆大小增加而增加。即使在我从B导航回A之后,堆大小仍然相同。甚至没有减少字节,事实上它有时会增加。是的,因为这些网络浏览。我已阅读关于SO和其他网站上的Web视图内存泄漏的信息。我跟着方法提到here
- 添加的Web视图动态地将容器[RelativeLayout的]中。在活动中删除的WebView的OnDestroy
- 分入级的Web视图作为SO文章中建议
- 清除网页视图缓存每次等
不管堆大小不回来什么是导航到前B.
真的很感激,如果有人能指导我可能修复
注:
我已阅读过此内容,并在SO上关注此问题。 Memory leak in WebView
编辑:
无我有B中的Web视图和堆大小增加尝试是非常非常少大约0.5 MB,但与Web视图会起皱4-5 MB
堆大小日志
onCreate B
debug.heap native: allocated 4.11MB of 4.17MB (0.01MB free) in []
debug.memory: allocated: 12.00MB of 96.00MB (1.00MB free)
onDestroy B
debug.heap native: allocated 8.66MB of 10.08MB (0.48MB free) in []
debug.memory: allocated: 12.00MB of 96.00MB (1.00MB free)
on Resume A
debug.heap native: allocated 7.94MB of 10.08MB (1.32MB free) in []
debug.memory: allocated: 12.00MB of 96.00MB (0.00MB free)
我过通过采取堆转储之前和B开始和destoryed检查后的数字(按照建议中提到here了),堆的大小是相当接近一个我得到它在原木
什么是堆的大小?你在哪里得到数字? – Leonidos
已采取堆转储并使用了SO中建议的方法。看到我的编辑 – JeeZ
它是否会导致OOM?如果没有,也许这只是某种优化?您是否尝试过(用于测试)调用GC,以查看堆大小是否恢复正常?顺便说一句,你不必使用堆转储。 DDMS中已经有一个按钮来显示堆的状态(另外还可以通过编程的方式来完成)。 –