Android:由于位图,HONEYCOMB 之前和之后的堆使用情况?

标签 android memory-management bitmap virtual-machine heap-memory

我正在为 Android 2.2 及更高版本开发图形密集型应用程序。

我知道从 Honeycomb 开始,位图存储在 VM_HEAP 而不是它们的 native 位图堆。

这会影响我的应用程序的有效内存使用吗?我的意思是,例如,如果我的 pre-Honeycomb 设备应用程序使用 X MB 的 VM 堆,并且有 Y MB 位图(存储在 native 堆上),那么我希望它不会开始使用来自 VM 堆的 X+Y MB如果它安装在 Honeycomb 或更新的设备上。

这听起来不合逻辑。相反,我猜想位图大小甚至在 Honeycomb 之前就被计入了 VM 限制,否则为什么会出现“位图大小超过 VM 预算”错误?所以它们存储在它们的 native 堆上,但仍计入 VM_HEAP 大小最大值)。

最佳答案

我也很担心,但同时我得到了谷歌的答复,证实了我的以下假设:

“这听起来不合逻辑。相反,我猜位图大小甚至在 Honeycomb 之前就被计入了 VM 限制,否则为什么会出现“位图大小超过 VM 预算”错误?所以它们存储在它们的 native 堆上但仍计入 VM_HEAP 最大大小)。”

Romain Guy(Android Framework 工程师)的回答:

“没错。您的应用将在 Honeycomb 前后使用相同数量的内存。”

关于Android:由于位图,HONEYCOMB 之前和之后的堆使用情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10675743/

相关文章:

c++ - gdb: <error reading variable> with c++ vector

android - 在两个 Actor 之间绘制视线

android - 一个 View 中的日期和时间选择器

实模式 DOS .COM(独立式)的自定义内存分配器——如何调试?

java - 如何在不填充的情况下在位图上绘制圆圈?

android - Android 中的缓冲图像

Android Bitmap/Drawable mask

java - 如何在 Android 上添加 Java 库兼容性的持续集成检查?

java - Calendar.setTimeInMillis 错误 - 这是为什么?

objective-c - 我可以创建自己的内存管理来处理 Cocoa 对象吗