java - Android 中的堆转储和内存使用差异?

标签 java android memory memory-leaks heap-memory

好吧,我通常不会寻求帮助,因为我通常更喜欢自己寻找答案,但不幸的是我似乎无法做到这一点。

我正在摆弄 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/

相关文章:

java - 我无法在 TextView 中显示计时器

java - 我们是否应该设计包含对象操纵器的界面

java - Android 获取日期前 7 天(一周)

c - 为什么在 C 中创建指向 const 的指针的指针是非法的?

c - 双指针与指向数组的指针,不兼容的指针类型

java - 语音分割

android包名格式

Android 应用版本控制设置初始版本号

r - 错误 : vector memory exhausted (limit reached?) R 3.5.0 macOS

java - 在 Jetty 服务器 v 9.2.2 上运行 JSP 时出错