【发布时间】:2013-01-02 04:07:38
【问题描述】:
所以我明白了:
'01-01 20:37:34.859: E/dalvikvm-heap(19921): Out of memory on a 6471856-byte allocation.'
当试图将一堆变量分配给内存时。 我正在分配 24 个这样的变量:
mElements.add(new ShopElement(getResources(),R.drawable.shop_starter, b1X , b1Y,true,1,"red",true,5,checkLocked(0)));
其中之一:
bNumbers = new Bitmap[] {Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h0)
, 65,65, true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h1)
, 65,65, true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h2)
, 65,65, true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h3)
, 65,65, true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h4)
,65,65,true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h5)
, 65,65, true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h6)
, 65,65, true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h7)
, 65,65, true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h8)
, 65,65, true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.h9)
, 65,65, true),
Bitmap.createScaledBitmap(BitmapFactory.decodeResource(getResources(), R.drawable.time)
, 50,50, true)};
但在我完成创建的 24 个元素中的第 16 个之前,它在某些手机上崩溃了。
我有一个 Galaxy S2,它运行良好,但在 S3 和其他手机上它会崩溃。
我很乐意应要求提供更多信息。
我之前搜索过此错误,尝试应用解决方案,并查看了“有效显示位图”的内容,但似乎没有任何帮助。
让我头疼的是它在 S2 上工作,但在 S3 上却不行。 S3不应该在各个方面都超过S2吗?
我正在使用全局 BitmapFactory.Options 来绘制我的所有位图,我将选项设置如下:
Global.opts = new BitmapFactory.Options();
Global.opts.inDither=false;
Global.opts.inPurgeable=true;
Global.opts.inInputShareable=true;
Global.opts.inTempStorage=new byte[16 * 1024];
【问题讨论】:
-
当然。您将这么多位图放入内存。尝试完善你的逻辑。
-
我的猜测是,它崩溃的手机的可用内存比没有崩溃的手机少。调整图像大小通常在内存方面非常昂贵,可能会将其分块以便垃圾收集有时间工作。
-
我没有“分块”的经验。这是否意味着我应该按框架分开分配组变量?
-
天哪!您是否真的将 6.5++ MB 图像加载到您的手机中???? 50K - 合理。 1MB - 大。 6.5MB - Fuggedabouddit!恕我直言...
-
显然,我是。我还没有计算出图像的总大小,但显然。