【发布时间】:2013-01-06 15:26:50
【问题描述】:
问题出现在最后一行,当我尝试新建这样一个数组时,它崩溃了。在 Logcat 中,它显示“java.lang.OutOfMemoryError”。那是什么意思?请帮忙。
Bitmap bmap;
Bitmap bMapRotate;
int bmapWidth;
int bmapHeight;
int[] bmapColorArray;
int bmapColorArraySize;
bmapWidth = bmap.getWidth();
bmapHeight = bmap.getHeight();
bmapColorArraySize = bmapWidth * bmapHeight;
bmapColorArray = new int[bmapColorArraySize];
bmap.getPixels(bmapColorArray, 0, bmapWidth, 0, 0, bmapWidth, bmapHeight);
然后调用把这个int数组传给native层。
【问题讨论】:
-
这意味着您尝试分配的内存超出了可用内存。一个 int 数组每个条目需要四个字节。那个位图有多大?
-
我通过调用 BitmapFactory.decodeByteArray(data, 0, data.length); 得到 bmp;
-
好的。我试了一个小数,所以没问题。也就是bmpColorArraySize太大,堆内存承受不起。所以这种方式可能行不通。问题是我想拍照传给native层,用JNI做一些计算,怎么办?
标签: android arrays out-of-memory