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


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

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



  • 相关阅读:
    背景颜色的渐变设置--实现丰富多彩的背景效果
    CSS-sprit 雪碧图
    背景图片的相关设置
    关于阿里云图标的使用 iconfont
    HTML四种定位-粘滞定位
    HTML四种定位-固定定位
    HTML四种定位-绝对定位
    HTML四种常见的定位-相对定位
    水平居中
    CentOS8更换国内镜像源
  • 原文地址:https://www.cnblogs.com/jhcelue/p/7295503.html
Copyright © 2011-2022 走看看