Android中的RGB_565位图 - 在内存中需要多少钱?

时间:2011-04-02 14:03:16

标签: android bitmap

RGB_565位图在Android中占用多少内存?我猜每个像素2个字节但是:

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

2 个答案:

答案 0 :(得分:0)

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

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

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

答案 1 :(得分:0)

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

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

在这篇文章here

中详细讨论