码迷,mamicode.com
首页 > 其他好文 > 详细

Bitmap OutOfMemoryError

时间:2014-06-10 13:42:25      阅读:146      评论:0      收藏:0      [点我收藏+]

标签:outofmemoryerror   bitmap   回收   

在创建Bitmap的时候由于对象过多而没有即使回收,导致的内存不足:

java.lang.OutOfMemoryError
E/AndroidRuntime(21898):     at android.graphics.BitmapFactory.nativeDecodeAsset(Native Method)
E/AndroidRuntime(21898):     at android.graphics.BitmapFactory.decodeStream(BitmapFactory.java:500)
E/AndroidRuntime(21898):     at android.graphics.BitmapFactory.decodeResourceStream(BitmapFactory.java:353)
E/AndroidRuntime(21898):     at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:376)
E/AndroidRuntime(21898):     at android.graphics.BitmapFactory.decodeResource(BitmapFactory.java:406)


解决办法:

方法一:减小图片大小

BitmapFactory.Options opts = new BitmapFactory.Options(); 

opts.inSampleSize = n; 

bitmap = BitmapFactory.decodeStream(fis, null, opts);

opts.inSampleSize的默认值是0 ,设置其值可以压缩图片以减小OOM几率,这种方法可以缓解问题但是不能彻底解决问题,当某时bitmap对象超过阀值时还是回报错。


方法二:及时回收bitmap内存:

if(bitmap != null && !bitmap.isRecycled()){  
        bitmap.recycle();  
        bitmap = null;  
}  
System.gc();  


bitmap.recycle()方法用于回收该bitmap所占用的内存,接着将bitmap置空,最后,用System.gc()调用一下系统的垃圾回收器。


方法三: 自然是优化代码结构

好的代码结构和代码风格是程序员毕生追求...!

Bitmap OutOfMemoryError,布布扣,bubuko.com

Bitmap OutOfMemoryError

标签:outofmemoryerror   bitmap   回收   

原文地址:http://blog.csdn.net/tangnengwu/article/details/27684685

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!