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 缩小的倍数...
  • jdsjlzx
  • jdsjlzx
  • 2012年05月21日 23:16
  • 4210

用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内存。...

完美解决java.lang.OutOfMemoryError: bitmap size exceeds VM budget

转自http://www.maxhis.info/androiding/bitmap-size-exceed/ 当图片过大,或图片数量较多时使用BitmapFactory解码图片会出java...

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 h

1、现象 很多朋友应该都碰到过下面这个异常 Java 1234567891011121314151617FATAL EXCEPTION: mainjava.lang.OutOfMemo...

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

在开发图片浏览器等软件是,很多时候要显示图片的缩略图,而一般情况下,我们要将图片按照固定大小取缩略图,一般取缩略图的方法是使用BitmapFactory的decodeFile方法,然后通过传递进去Bi...

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

BitmapFactory.decodeFile(imageFile); 用BitmapFactory解码一张图片时,有时会遇到该错误。这往往是由于图片过大造成的。要想正常使用,则需要分配更...
  • lanpy88
  • lanpy88
  • 2011年08月22日 13:29
  • 617

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

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

Dealing with the “Bitmap Size Exceeds VM Budget” error

Dealing with the “Bitmap Size Exceeds VM Budget” error BY RUI, ON FEBRUARY 14TH, 2011 One ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:bitmap size exceeds VM budget 的解决办法分享
举报原因:
原因补充:

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