我收到“位图大小超出 VM 预算”错误。我读过有一个 16MB 的内存限制。 In this thread Romain Guy 说“你只能分配 16 MB 整个应用程序的内存”。
但是,我的应用程序必须在达到该限制之前很久就耗尽内存。所以我的问题是:我如何为我的应用程序分配内存......我怎样才能增加对我的应用程序的分配(在最大 16MB 内)?
最佳答案
与任何 Java VM 一样,堆内存将自动增长到最大大小。但是,位图是在 VM 外部分配的,因此您不会在统计信息中轻松“看到”它们。你能做的最好的事情是确保你不使用大的位图,或者使用
缩小它们
http://developer.android.com/reference/android/graphics/BitmapFactory.Options.html
当您在 Android 1.6 或更高版本上时,您可以从 Eclipse 生成堆转储,并且可以使用 Eclipse MAT 分析转储。
通常您无法控制真实设备上的最大堆大小,除非您使用的是自定义硬件或固件。
developer.android.com 上应该有一篇关于在 1.6 上转储堆的文章,但我找不到。 :(
编辑
另外,我不得不提一下,您可以使用
android:largeHeap="true"
在 list 中。但这是非常不明智的,因为大多数应用程序不需要它。
关于安卓内存分配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2131947/