【问题标题】:Measure (Android) heap fragmentation?测量(Android)堆碎片?
【发布时间】:2012-01-11 21:13:52
【问题描述】:

我们有一个应用程序,内存中有很多位图。它不断失败,

java.lang.OutOfMemoryError: bitmap size exceeds VM budget

错误。我们可能真的使用了太多的内存;我们可能正在泄漏内存;也有可能我们没有做错任何事情,而堆碎片正在杀死我们。 (由于 Android 的垃圾收集器不会重新定位活动块,我们可能有 MB 空闲空间,但无法分配 50K。)

有什么办法可以排除碎片吗?我一直在寻找诸如 maxAvail/memAvail 之类的东西,但没有发现任何合适的东西。

【问题讨论】:

  • 谢谢你,@Torid。这种方法可能是我们必须做的……如果事实证明我们真的使用了太多的内存。不过,在这一点上,我们仍在尝试找出我们遇到的问题。

标签: android heap-memory fragmentation


【解决方案1】:

我会考虑通过MAT 检查堆。 Eclipse 内存分析器将帮助您确定您实际遇到的建议问题。

在 Google I/O 2011 上进行了一次演讲,其中涵盖了有关内存管理和调试主题的一些基础知识。你可以在这里在线观看:http://www.youtube.com/watch?v=_CruQY55HOk&feature=relmfu

【讨论】:

  • 谢谢。我会尽快回复这个问题,要么接受你的回答,要么发布更多的 cmets。
  • 当 MAT 显示您使用 32 或 64 中的 5M 并且您在 2M 分配上获得 OOM 时,很难断定这只是碎片。
猜你喜欢
  • 2012-03-18
  • 2011-11-07
  • 2014-07-14
  • 2010-10-15
  • 1970-01-01
  • 2010-09-14
  • 1970-01-01
  • 2012-03-16
  • 1970-01-01
相关资源
最近更新 更多