【发布时间】:2014-05-28 18:39:45
【问题描述】:
我愿意
myImage.setBackgroundResource(R.drawable.mydrawable);
我收到了OutOfMemoryError。但是资源只有5kb!!!我有各种堆栈跟踪,有时什么也没说,有时说我正在使用大约 5Mb,有时是 7Mb。
这是在 Galaxy S4 上。在其他设备上,我没有收到错误。 GC 是否以在某些设备上触发缓慢而闻名?还有什么想法吗?
【问题讨论】:
-
是
PNG吗?您确定 this 是抛出OOM的资源吗? -
@nKn 它是一个
PNG,当我设置它时就会抛出错误,确定这一点 -
是否可以将其转换为另一种格式,例如
JPG,或者您需要它是PNG?一件事是文件在磁盘上的长度,但另一个非常不同的是Bitmap需要多少数据来表示它,而PNG则更糟。 -
"但是资源只有5kb!" - 所以?如果一座桥的重量限制为 1000 公斤,你在上面放了 950 公斤,然后再增加 100 公斤,桥就倒塌了,你不能抱怨“但增加的重量只有 100 公斤!”。您的问题可能与此特定资源无关,而与您的整体堆使用情况有关。使用 MAT 确定您的应用程序堆发生了什么。
标签: android