【发布时间】:2014-04-27 18:03:20
【问题描述】:
我知道有很多关于 OOM 问题的信息,但是在提出这个问题之前我已经阅读了很多资料,但在任何地方都找不到答案。
我正在使用
加载很多小图像image = BitmapFactory.decodeResource(getResources(), R.drawable.image);
这些图像没有按比例缩小,因此 insamplesize 无济于事。这些图像中最大的只有大约 400kb。我的三星 Galaxy s4 越来越多,我不知道为什么。
04-27 13:38:40.023: I/dalvikvm-heap(16915): 将堆(碎片案例)增长到 97.450MB 分配 8294416 字节
xhdpi 图像总大小为 5.1 mb,那么我的堆如何达到 97.45mb ???
一些“字节分配”是巨大的。 2000 万+ 这对我来说没有意义,因为 400kb 只有 ~410,000 字节,那么为什么要分配 2000 万字节呢?
我暂时忽略了这个问题,因为它在我测试过的所有设备上都能正常工作。但现在我正在尝试使用分辨率稍高的图像(总共 5.9mb)并且应用程序得到了 OOM
04-27 13:52:28.890: E/dalvikvm-heap(22852): 内存不足 33177616字节分配。
它指向
04-27 13:52:28.900: E/AndroidRuntime(22852): 在 com.example.packagename.Game.run(Game.java:534)
这是
image = BitmapFactory.decodeResource(getResources(), R.drawable.image);
这张图片只有42kb!为什么需要分配 3300 万字节!?
还有我可以在应用加载时预加载这些图像吗?我想这样做以加快视图之间的转换,并且这些图像是否可以以需要更少内存的方式存储? (它们存储在 /res 中)
【问题讨论】:
-
您的“400kb”是指磁盘上的大小吗?
-
是吗?在我的电脑上是 420kb...
标签: android memory bitmap out-of-memory