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()调用一下系统的垃圾回收器。
方法三: 自然是优化代码结构
好的代码结构和代码风格是程序猿毕生追求...!
Bitmap OutOfMemoryError的更多相关文章
- java.lang.OutOfMemoryError: bitmap size exceeds VM budget解决方法
1 BitmapFactory.decodeFile(imageFile); 用BitmapFactory解码一张图片时,有时会遇到该错误.这往往是由于图片过大造成的.要想正常使用,则需要分配更少的内 ...
- 【Android】Bitmap加载图片错误 java.lang.OutOfMemoryError: bitmap size exceeds VM budget
今天测试程序的时候出现下面的错误日志信息,程序当场挂掉 07-09 14:11:25.434: W/System.err(4890): java.lang.OutOfMemoryError: bitm ...
- 关于如何避免Android中Bitmap引起的OutOfMemoryError
在Android中处理大图片不是一件很随意的事情,因为通常我们使用的是内置的BitmapFactory解码图片的,而BitmapFactory往往会因为图片过大而遇到OutOfMemoryError的 ...
- Android解决java.lang.OutOfMemoryError: bitmap size exceeds VM budget(转)
昨天遇到这个问题就是从一个输入流里调用BitmapFactory.decodeStream(this.getContentResolver().openInputStream(uri))得到一个bit ...
- Android OutOfMemoryError的理解
最近写了个测试demo调试网络优化,发现下载20M的文件时我直接申请了20M的空间,然后就OOM导致crash了~~ 典型的错误信息如下: OutOfMemoryError:Out of memory ...
- android 通过uri获取bitmap图片并压缩
很多人在调用图库选择图片时会在onActivityResult中用Media.getBitmap来获取返回的图片,如下: Uri mImageCaptureUri = data.getData(); ...
- Android图片缓存之Bitmap详解
前言: 最近准备研究一下图片缓存框架,基于这个想法觉得还是先了解有关图片缓存的基础知识,今天重点学习一下Bitmap.BitmapFactory这两个类. 图片缓存相关博客地址: Android图片缓 ...
- android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法
android通过BitmapFactory.decodeFile获取图片bitmap报内存溢出的解决办法 原方法: public static Bitmap getSmallBitmap(Strin ...
- Bitmap旋转方法
最近在做一个ORC图片解析的功能,要求解析出数字 但是发现他解析只能解析横着的图片,然后我拍照的时候拍的是竖直照片,当然你也可以去旋转照相机的屏幕 但是我这里为了方便选择的是竖直拍出来 然后,旋转下咯 ...
随机推荐
- jdbcTemplate:包含占位符的SQL无法打印参数信息
网上的解决方案是在log4j设置以下参数:(如:http://my.oschina.net/wamdy/blog/468491) log4j.logger.org.springframework.jd ...
- OpenCV学习(5) Mat的基本操作(2)
本章我们学习一下Mat中的常用操作,因为在后面其它的教程中,我们经常要对图像进行各种处理,也要使用这些操作. 一. Mat的复制,就是从一个矩阵A,生成相关的另一个矩阵B. (1)使用赋值 ...
- GPGPU OpenCL Reduction操作与group同步
Reduction操作:规约操作就是由多个数生成一个数,如求最大值.最小值.向量点积.求和等操作,都属于这一类操作. 有大量数据的情况下,使用GPU进行任务并行与数据并行,可以收到可好的效果. gro ...
- 一道有序洗牌的笔试题,阿里\UC等都用过
题目:给定一个已经降序排好序的正数数组,要求按「最小.最大.次小.次大……」的顺序重新排序.期望的时间复杂度为O(n),空间复杂度为O(1),即不能申请额外的数组. 例如:输入[7,6,5,4,3,2 ...
- Windows MongoDB安装配置
1.下载 官网:http://www.runoob.com/mongodb/mongodb-window-install.html 由于是在window下,所以我下载的是mongodb-win32-x ...
- (转)一个非常好的akka教程
akka系列文章目录 akka学习教程(十四) akka分布式实战 akka学习教程(十三) akka分布式 akka学习教程(十二) Spring与Akka的集成 akka学习教程(十一) akka ...
- HDU2089 ------不要62(数位dp)
不要62 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submi ...
- 极客Web前端开发资源大荟萃#001
每周极客都将总结本周最精彩的素材提供给大家,希望可以带给你更多地灵感和帮助!极客#GB课程库#现已上线,无论你是初级.中级.还是正在进修的高级前端工程师.这里都将帮助你得到更多更高效的学习.原文:极客 ...
- Visual Studio 2012安装VASSISTX插件后导致CPU高的解决的方法
笔者一直都喜欢用VAX插件来做C++的开发,但发现VS2012安装了VAX后,CPU占用超级高,有时界面卡死得很厉害.我卸了又装,升级最新版,都无论用. 直到有天.看到网友说:VS2012的sdf文件 ...
- xcode 5 使用 XCTest 做单元测试
xcode 5 使用 XCTest 做单元测试 什么是单元测试,请看 百度百科 单元测试 一:在xcode5 之前,我们新建项目时,可以选择是否集成单元测试:如今在xcode5,我们新建立的项目默认就 ...