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