加载图像时出错 - “位图大小超出 VM 预算”

Posted

技术标签:

【中文标题】加载图像时出错 - “位图大小超出 VM 预算”【英文标题】:Error when load image - "Bitmap size exceeds VM budget" 【发布时间】:2012-04-19 03:28:53 【问题描述】:

我不断收到此错误,并且错误指向此代码:

bitmap = BitmapFactory.decodeByteArray(pic1 , 0, pic1.length);

图片来自sqlite数据库,用户从手机目录中选择图片后存储。 当我想检索图片时,我得到了错误。 从我的阅读来看,这是因为内存泄漏。 有什么建议/解决方案吗?

更新

当我在将图像保存到数据库之前添加下面的代码时问题解决了。

BitmapFactory.Options opt = new BitmapFactory.Options();

opt.inSampleSize = 8;

bitmap = BitmapFactory.decodeFile(path,opt);

感谢那些回复/回答的人:)

【问题讨论】:

试试看这个问题:***.com/questions/8904493/… 【参考方案1】:

试试这个

BitmapFactory.Options opt = new BitmapFactory.Options();
opt.inTempStorage = new byte[16*1024];

Bitmap bitmapImage = BitmapFactory.decodeFile(imgpath, opt);

【讨论】:

谢谢 Raghu。你能解释一下这部分:>opt.inTempStorage = new byte[16*1024]; inTempStorage 将分配一些时间内存用于解码【参考方案2】:

这可能是由于内存泄漏,但也可能是您使用了过多的内存。大图像很容易占用内存。如果遇到问题,请尝试缩小图像并查看是否仍然遇到这些错误。尝试使用内存分析器工具查找可能的泄漏。

【讨论】:

谢谢 Bobbake4。你能解释一下内存分析器工具吗?如何追踪可能的泄漏?

以上是关于加载图像时出错 - “位图大小超出 VM 预算”的主要内容,如果未能解决你的问题,请参考以下文章

OutOfMemoryError:位图大小超出 VM 预算:- Android [重复]

java.lang.OutOfMemoryError:位图大小超出 VM 预算 - Android

java.lang.OutOfMemoryError:位图大小超出 VM 预算

安卓内存分配

乘客:启动预加载器时出错

尝试使用 Google 地图预加载图标时出错 - INVALID_STATE_ERR: DOM Exception 11