zoukankan      html  css  js  c++  java
  • Bitmap OutOfMemoryError

    在创建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()调用一下系统的垃圾回收器。


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

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



  • 相关阅读:
    VPS服务器 基本配置
    WCF 系列 → HelloWord
    ASP.NET MVC3 常用整理
    ASP.NET MVC3 过滤器 Filter
    NVelocity系列 → NVelocity配置详解
    网站安全检测 Web 安全测试工具
    ASP.NET MVC3.0 静态化实现
    CSS3的动画泡沫按钮
    SQL 大数据优化
    用友备份失败,超时己过期
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7295503.html
Copyright © 2011-2022 走看看