即使我重用位图,运行时内存也会异常增长

时间:2013-11-23 16:34:07

标签: android android-image android-bitmap

在相机中onActivityResult()选择图库图像我这样做:

Bitmap bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri); 

其中imageUri文件大约为7.0MB,因此我创建了较小的位图,我将其分配给相同的位图:

bitmap=Bitmap.createScaledBitmap(bitmap,screenWidth,screenHeight/2, true)

但运行时内存在分配给7.0 MB位图的内存未释放的时候异常增长,GC是不是在收集以前分配的空间?或者还有什么原因?

1 个答案:

答案 0 :(得分:0)

试试这个:

bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imageUri);
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, screenWidth, screenHeight/2, true);
bitmap.recycle();
bitmap = null;

注意:首先7mb的内存分配是正常的。你得到一个关于7mb的位图。但是在将其缩放到新的位图后,您应该将其回收。然后你可以看到7mb的分配减少了。在此之后,您应该只看到在内存中分配的缩放位图的大小。