2011-04-02 51 views
0

Android中RGB_565位图占用多少内存?我猜每个像素2个字节,但是:Android中的RGB_565位图 - 它需要多少内存?

  1. 我有256x256的位图,所以会改变成256 * 256 * 2 = 131,072字节
  2. 我的应用程序(离线瓷砖地图)抛出的OutOfMemoryError上N1(2.3)时,内存中有143个位图。 143位图是18MB。我手机上的最大堆大小为32 MB。
  3. 这意味着我的应用程序的其余部分是32 - 18 = 14 MB。但是我在DDMS>堆中看到的只有7 MB以上。另外,我在16 MB堆大小的设备上只有2 MB的位图。

回答

0

在Android < 3.0中,位图不占用Dalvik堆中的空间,而是它们存储在本机堆中。您无法看到位图在DDMS堆中占用了多少内存(顺便说一下,您可以在ddms配置文件中加入“native = true”之类的内容)。

在3.0+中,位图数据存储在Dalvik堆中。

如果您有其他图像(也是xml文件中的背景,xml中的图像),他们占用了其他空间。我有很多OutOfMemoryIssues,因为我用太大的图像作为背景。

0

在nexus上,每个android应用程序被限制为24MB的内存,这包括您分配的任何位图。

它也加起来 - 没有位图的应用程序需要大约7MB,当你分配143位图时,我认为你违反了24MB的限制,从而导致异常。

在此文章中进行了更详细的讨论here