相同的应用程序在不同的Android设备上使用不同的内存量

我正在开发一个游戏,它使用来自2000x2000 px图像的位图的活动。

在我的HTC Hero中,当我运行该活动时,我正在使用12MB。

但是,如果我尝试在任何具有16MB堆的模拟器中运行该应用程序,则由于尝试分配16,4 MB的OutOfMemoryError,虚拟机崩溃; 怎么可能?

我也尝试过使用其他模拟器,并使用了20MB。

要衡量我正在使用的内存量:

int usedMegs = (int) (Debug.getNativeHeapAllocatedSize() / 1048576L);
    String usedMegsString = String
    .format(" - Memory Used: %d MB", usedMegs);
    getWindow().setTitle(usedMegsString);

为什么同一个位图需要12MB的HTC Hero和20MB的其他设备?

编辑:我想出了这是密度的原因。 密度1 = 12MB,密度0.75 = 8MB,密度1.5 = 20MB(不完全一些MB来自其他活动)

我可以说1.5密度设备使用1来解码位图吗?

编辑2:我有图像在/可绘制,所以当我加载1.5更大。 如果我将图像放在/ drawable-hdpi中,图像需要更少的内存(12 MB),因为它没有缩放。


你如何将你的位图加载到内存中? 这只是我的猜测,但也许HTC设备使用24位色彩空间加载位图,而其他设备使用32位色彩空间。 每像素24位的2000x2000位图将使用大约12 MB的内存,而每像素32位的相同位图则需要更接近16 MB或内存。

链接地址: http://www.djcxy.com/p/93057.html

上一篇: Same application uses different amounts of memory on different Android devices

下一篇: Mipmap drawables for icons