为什么ASUS Transformer Prime是唯一具有OutOfMemory异常的设备

时间:2012-02-17 16:32:03

标签: android out-of-memory tablet android-4.0-ice-cream-sandwich

我正在研究需要显示4个大位图(6 x屏幕大小)的Android应用程序。一开始,我遇到了问题,但内存管理的代码优化适用于整个设备。但是在4.0.3 android版本的华硕Transformer Prime上,我有一个OutOfMemory错误。这很奇怪,因为堆大小似乎是256Mb。与其正确运行的其他设备相比有很多。

我们已激活大堆并停用硬件加速。

您对我们的问题有所了解吗?

1 个答案:

答案 0 :(得分:2)

您的屏幕是1280x800,因此屏幕大小的32bpp位图需要不到4MB,而6x屏幕尺寸的位图需要23.5MB。你想要其中的四个......那是93.75MB。

进程堆限制因设备而异,但我认为64MB是很多(也许我落后于时代)。 256MB是巨大的!

恕我直言,你不应该试图在内存中保留如此庞大的位图。你最好将它们分成不大于屏幕的瓷砖,并根据需要加载瓷砖。

或者,尝试使用16bpp映像或在JNI中为大量位图分配空间(即在C中)并完全绕过Java堆管理。