gpt4 book ai didi

android - 分配跟踪器或堆分析器可以帮助跟踪 'bitmap size exceeds VM budget' 错误吗?

转载 作者:行者123 更新时间:2023-11-30 04:16:35 24 4
gpt4 key购买 nike

我在追踪“位图大小超出 VM 预算”错误时遇到了很大的问题。我查看了其他问题,并尝试了所有建议(取消分配资源,使用 bitmap.recycle() 并将变量、位图、 Canvas 设置为空,当 Activity 被破坏或 View 从窗口分离时 https://stackoverflow.com/a/6779448/571143 ,还试图摆脱 ' this' 上下文并使用了 this.getAplicationContext())。

我遇到的问题不是位图太大而无法加载。一开始一切都加载正常,但在多次重复更改当前 Activity 后,我收到此错误(在设备上发生的 Activity 更改比在模拟器上多得多)。

所以,回到我的问题,有没有办法使用分配跟踪器或堆分析器来指导我朝着正确的方向前进?这些工具中没有“位图分配”的痕迹,只有小的(大部分小于 1kb)分配。我已经读过这个:http://android-developers.blogspot.com/2009/02/track-memory-allocations.html

我知道我做错了什么,因为位图没有释放,但我正在做的项目非常大,由一群人完成,所以手工分析一切都是最后的选择,也非常耗时。

在这种情况下,如果能提供有关这些工具的任何提示,我将不胜感激。

干杯,卡吉曼

最佳答案

你已经发现它是某种内存泄漏。如果您还没有这样做,请确保您不只是在缓存中累积位图而不清除它。其他可能(且更微妙)的问题包括具有引用 Activity 或上下文的长时间运行的任务,或使用长时间运行的任务或单例注册监听器的 Activity 。

您可以使用 Eclipse 内存分析器 http://www.eclipse.org/mat/工具来追踪持有哪些类型的引用资料。它在 2.x 手机上有点棘手,因为位图是在 native 内存中分配的,不会显示在您的 VM 堆转储中。您仍然会看到位图,但它们不会以实际占用的大小列出。您可以通过尝试比较首次打开应用程序时与开始大量新 Activity 后的位图对象数来解决此问题。

有关调试这些问题和使用相关工具的精彩演讲,请参阅 google IO 演讲:http://www.youtube.com/watch?feature=player_embedded&v=_CruQY55HOk

关于android - 分配跟踪器或堆分析器可以帮助跟踪 'bitmap size exceeds VM budget' 错误吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9891545/

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