Android Emulator:java.lang.OutOfMemory操作位图时出错
我有一个处理位图的例程,将RGB格式转换为灰度 它通常工作正常,但当我尝试在大小为1088kb的位图上使用它时,会出现以下错误:Android Emulator:java.lang.OutOfMemory操作位图时出错,android,out-of-memory,image,Android,Out Of Memory,Image,我有一个处理位图的例程,将RGB格式转换为灰度 它通常工作正常,但当我尝试在大小为1088kb的位图上使用它时,会出现以下错误: java.lang.OutOfMemoryError 我正在使用模拟器。1088kb不是一个很大的图像,它怎么会耗尽内存 确切地说,调用有问题代码的应用程序在后堆栈上包含另一个活动,该活动具有图片缩略图的ListView 方法如下: public Bitmap toGrayscale(Bitmap bmpOriginal) { int wid
java.lang.OutOfMemoryError
我正在使用模拟器。1088kb不是一个很大的图像,它怎么会耗尽内存
确切地说,调用有问题代码的应用程序在后堆栈上包含另一个活动,该活动具有图片缩略图的ListView
方法如下:
public Bitmap toGrayscale(Bitmap bmpOriginal)
{
int width, height;
height = bmpOriginal.getHeight();
width = bmpOriginal.getWidth();
Bitmap bmpGrayscale = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565);
Canvas c = new Canvas(bmpGrayscale);
Paint paint = new Paint();
ColorMatrix cm = new ColorMatrix();
cm.setSaturation(0);
ColorMatrixColorFilter f = new ColorMatrixColorFilter(cm);
paint.setColorFilter(f);
c.drawBitmap(bmpOriginal, 0, 0, paint);
return bmpGrayscale;
}
您在内存中管理位图的效率非常低,并且可能存在内存泄漏(在处理完位图后没有将其从内存中释放出来,或者将其保留在未进行垃圾收集的活动中)。Android开发者有一个适当的位图管理页面: 您可以尝试增加模拟器上的堆大小。 监视模拟器上的堆大小: 清除内存泄漏:
您在内存中管理位图的效率非常低,并且可能存在内存泄漏(没有在处理完位图后从内存中释放位图,或者将其保留在未进行垃圾收集的活动中)。Android开发者有一个适当的位图管理页面: 您可以尝试增加模拟器上的堆大小。 监视模拟器上的堆大小: 清除内存泄漏:
位图大小为1088 kB或PNG文件?您需要.recycle()位图当您不使用它时,也许您可以回收“原件”并保留灰度memory@PaNaVTEC请问我该怎么做?只需在位图上调用recycle()?谢谢位图大小为1088 kB或PNG文件?您需要.recycle()位图,当您不使用它时,也许您可以回收“原始”并保留灰度memory@PaNaVTEC请问我该怎么做?只需在位图上调用recycle()?谢谢