好吧,我通常不会寻求帮助,因为我通常更喜欢自己寻找答案,但不幸的是我似乎无法做到这一点。
我正在摆弄 Android 2.1+ 的动态壁纸,一切进展顺利,直到我开始遇到 OOM 错误:
Java.lang.OutOfMemoryError: bitmap size exceeds VM budget
好的 - 我做了研究,发现我肯定在某个地方存在内存泄漏。所以我阅读了如何分析此类问题,打开 DDMS 并进行了堆转储。堆大小通常约为 4.5-5mb,并且永远不会超过 60%。这是没有意义的,因为我检查了我的开发手机上正在运行的服务,它报告我的进程使用了 35-42mb 的内存。
我并不是要求任何人找到我的泄漏,因为这需要大量代码等。只是为了解释如何正确分析我的内存使用情况,因为我似乎对发生的事情感到完全傻眼。
最佳答案
我猜您已经这样做了,但以防万一...您是否检查了触发 OutOfMemoryError 的行?您尝试创建的位图有多大?
如果是泄漏,这里有一篇文章可以帮助您分析堆转储(尽管文章标题是这样,但您不必使用 eclipse):
Android ==> Memory Analysing ==> Eclipse memory analyzer?
祝你好运。
关于java - Android 中的堆转储和内存使用差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4561880/