首页 > 其他 > 详细

Bitmap OutOfMemoryError

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

在创建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

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

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!