在创建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的更多相关文章

  1. java.lang.OutOfMemoryError: bitmap size exceeds VM budget解决方法

    1 BitmapFactory.decodeFile(imageFile); 用BitmapFactory解码一张图片时,有时会遇到该错误.这往往是由于图片过大造成的.要想正常使用,则需要分配更少的内 ...

  2. 【Android】Bitmap加载图片错误 java.lang.OutOfMemoryError: bitmap size exceeds VM budget

    今天测试程序的时候出现下面的错误日志信息,程序当场挂掉 07-09 14:11:25.434: W/System.err(4890): java.lang.OutOfMemoryError: bitm ...

  3. 关于如何避免Android中Bitmap引起的OutOfMemoryError

    在Android中处理大图片不是一件很随意的事情,因为通常我们使用的是内置的BitmapFactory解码图片的,而BitmapFactory往往会因为图片过大而遇到OutOfMemoryError的 ...

  4. Android解决java.lang.OutOfMemoryError: bitmap size exceeds VM budget(转)

    昨天遇到这个问题就是从一个输入流里调用BitmapFactory.decodeStream(this.getContentResolver().openInputStream(uri))得到一个bit ...

  5. Android OutOfMemoryError的理解

    最近写了个测试demo调试网络优化,发现下载20M的文件时我直接申请了20M的空间,然后就OOM导致crash了~~ 典型的错误信息如下: OutOfMemoryError:Out of memory ...

  6. android 通过uri获取bitmap图片并压缩

    很多人在调用图库选择图片时会在onActivityResult中用Media.getBitmap来获取返回的图片,如下: Uri mImageCaptureUri = data.getData(); ...

  7. Android图片缓存之Bitmap详解

    前言: 最近准备研究一下图片缓存框架,基于这个想法觉得还是先了解有关图片缓存的基础知识,今天重点学习一下Bitmap.BitmapFactory这两个类. 图片缓存相关博客地址: Android图片缓 ...

  8. android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法

    android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法 原方法: public static Bitmap getSmallBitmap(Strin ...

  9. Bitmap旋转方法

    最近在做一个ORC图片解析的功能,要求解析出数字 但是发现他解析只能解析横着的图片,然后我拍照的时候拍的是竖直照片,当然你也可以去旋转照相机的屏幕 但是我这里为了方便选择的是竖直拍出来 然后,旋转下咯 ...

随机推荐

  1. ArcGIS Engine中空间参照(地理坐标)相关方法总结转

    ArcGIS Engine中空间参照(地理坐标)相关方法总结 来自:http://blog.csdn.net/u011170962/article/details/38776101 1.创建空间参考 ...

  2. infor系统日常问题解决笔记

    1.问题:结算单核准时候显示订单XXX的状态为已修改. 解决方法:在采购订单状态栏重新核准订单,采购订单状态不影响发票核准,结算后不允许再新增采购订单行,否则仍然会提示采购订单状态为已修改,且无法进行 ...

  3. Mac OSX 系统目录结构(转)

    摘要 在OS X的系统中,不再有Windows用户熟悉的C盘.D盘,这是因为OS X底层是Unix系统,其目录机构符合Unix系统的规范.MAC机器主板使用了Intel主导的EFI标准,硬盘分区格式采 ...

  4. C# ?(问号)的三个用处

    public DateTime? StatusDateTime = null; 脑子便也出现个问号,这是什么意思呢?网上搜下,总结如下: 1. 可空类型修饰符(?): 引用类型可以使用空引用表示一个不 ...

  5. C++游戏系列:文件夹

    C++游戏系列1:角色类 C++游戏系列2:给角色装备武器 C++游戏系列3:用多文件组织角色类 C++游戏系列4:杀伤距离有限制 C++游戏系列5:不止有一件武器 C++游戏系列6:自己动起来 C+ ...

  6. DHCP安装配置详解

    DHCP基于客户/服务器模式.当DHCP客户端启动时,它会自动与DHCP服务器通信,由DHCP服务器为DHCP客户端提供自动分配IP地址的服务. 当然高级的DHCP,不光只是分配地址这么简单,今天我们 ...

  7. netty-socketio之BroadcastOperations

    最近用到了netty-socketio.之前对这个了解比较少,对netty了解比较多,看代码的时候,发现二者不是一个东西(废话). 主要让我比较惊讶的区别是BroadcastOperations这个东 ...

  8. Dragon of Loowater

    option=com_onlinejudge&Itemid=8&page=show_problem&problem=2267" style="color:b ...

  9. Keepalived+Nginx实现高可用和双主节点负载均衡

    简介 Nginx可以实现高并发反向代理,lvs集群可以实现负载均衡,但是他们都有一个共同的弊端,就是Nginx,lvs架构中Director是单点故障,有没有一个好的方案解决这个问题呢?答案是有.通过 ...

  10. SCU 4313 把一棵树切成每段K个点 (n%k)剩下的点不管

    题目链接:http://cstest.scu.edu.cn/soj/problem.action?id=4313 判断是不是存在拆图得到新连通分支的点个数是K的倍数 注意一个点所连的边只能被切一条 # ...