bitmap size exceeds VM budget 的解决办法分享

转载 2012年03月27日 21:34:40
昨天遇到这个问题就是从一个输入流里调用BitmapFactory.decodeStream(this.getContentResolver().openInputStream(uri))得到一个bitmap报的错。第一次调用都没问题,第二次再次调用就会报上面那个内存溢出的问题。而且有的手机报有的手机不报。研究了半天终于解决。首先分析了下原因,应该是图片占用的内存超过了系统虚拟机可分配的最大限制。不同手机可能分配的最大值不一样。后来找到解决办法主要是设置BitmapFactory.Options。
  1. BitmapFactory.Options bitmapOptions = new BitmapFactory.Options();
  2.                         bitmapOptions.inSampleSize = 4;
  3.                         bitmap = BitmapFactory.decodeStream(this.getContentResolver()..openInputStream(uri), null , bitmapOptions);
复制代码
有的说要加上bitmapOptions.inJustDecodeBounds = true;但是我加上后得到的bitmap就为null。去掉之后就可以。按照上面的方法就解决问题了。最好把bitmap在不用的时候回收一下:
  1. if (bitmap != null && !bitmap.isRecycled())
  2.                         bitmap.recycle();
复制代码
某位大神的图片占用内存的算法:
介绍一下图片占用进程的内存算法吧。
android中处理图片的基础类是Bitmap,顾名思义,就是位图。占用内存的算法如下:
图片的width*height*Config。
如果Config设置为ARGB_8888,那么上面的Config就是4。一张480*320的图片占用的内存就是480*320*4 byte。
前面有人说了一下8M的概念,其实是在默认情况下android进程的内存占用量为16M,因为Bitmap他除了java中持有数据外,底层C++的skia图形库还会持有一个SKBitmap对象,因此一般图片占用内存推荐大小应该不超过8M。这个可以调整,编译源代码时可以设置参数。

相关文章推荐

android加载大量图片内存溢出bitmap size exceeds VM budget的解决办法。

方法一: 在从网络或本地加载图片的时候,只加载缩略图。 /** * 按照路径加载图片 * @param path 图片资源的存放路径 * @param scalSize 缩小的倍数...

用Bitmap加载图片资源时,报错java.lang.OutOfMemoryError: bitmap size exceeds VM budget的解决办法

http://blog.csdn.net/jason_wks/article/details/7454823 android系统限制,只给图片分配8兆的内存,超过就崩,你图片几十KB,可能是压缩格式...

用Bitmap加载图片资源时,报错java.lang.OutOfMemoryError: bitmap size exceeds VM budget的解决办法

android系统限制,只给图片分配8兆的内存,超过就崩,你图片几十KB,可能是压缩格式的,转换成bitmap就是本来的大小。 在使用模拟器时,出现以上错误,怎么办呢? 1.方法一:增大限...

用Bitmap加载图片资源时,报错java.lang.OutOfMemoryError: bitmap size exceeds VM budget的解决办法

android系统限制,只给图片分配8兆的内存,超过就崩,你图片几十KB,可能是压缩格式的,转换成bitmap就是本来的大小。 在使用模拟器时,出现以上错误,怎么办呢? 1.方法一:增大限...

用Bitmap加载图片资源时,报错java.lang.OutOfMemoryError: bitmap size exceeds VM budget的解决办法

android系统限制,只给图片分配8兆的内存,超过就崩,你图片几十KB,可能是压缩格式的,转换成bitmap就是本来的大小。 在使用模拟器时,出现以上错误,怎么办呢? 1.方法一:增大限...

android 内存溢出处理办法(出现java.lang.OutOfMemoryError: bitmap size exceeds VM budget 异常)

昨天在模拟器上给gallery放入图片的时候,出现java.lang.OutOfMemoryError: bitmap size exceeds VM budget 异常,图像大小超过了RAM内存。...

android BitmapFactory的OutOfMemoryError: bitmap size exceeds VM budget解决方案

转自:http://www.cnblogs.com/hellope/archive/2011/08/23/2150400.html 使用android提供的BitmapFactory解码一张图片时,...

Android 图片OutOfMemory异常bitmap size exceeds VM budget的原因及解决方法

主要介绍Android图片oom问题的原因及解决方法,顺带提及Dalvik heap size。 1、现象 很多朋友应该都碰到过下面这个异常 Java ...

Android 图片OutOfMemory异常bitmap size exceeds VM budget的原因及解决方法

主要介绍Android图片oom问题的原因及解决方法,顺带提及Dalvik heap size。 1、现象 很多朋友应该都碰到过下面这个异常 Java ...

android BitmapFactory的OutOfMemoryError: bitmap size exceeds VM budget解决方案

转载于:http://www.cnblogs.com/hellope/archive/2011/08/23/2150400.html 使用android提供的BitmapFactory解码一张图...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)