此错误对于新手做项目的时候经常会发生,而且不容易处理

默认情况下,每个android程序的dailvik虚拟机的最大堆空间大小为16M

当加载的图片太多或图片过大时经常出现OOM问题

而出现此类问题最常见的情况就是当我们使用BitMap类的时候

网上解决办法很多,这里贴出感觉最有用的一种解决办法

解决办法:

 public Bitmap matrixBitmapSize(Bitmap bitmap, int screenWidth,
int screenHight) {
//获取当前bitmap的宽高
int w = bitmap.getWidth();
int h = bitmap.getHeight(); Matrix matrix = new Matrix();
float scale = (float) screenWidth / w;
float scale2 = (float) screenHight / h; // 取比例小的值 可以把图片完全缩放在屏幕内
scale = scale < scale2 ? scale : scale2; // 都按照宽度scale 保证图片不变形.根据宽度来确定高度
matrix.postScale(scale, scale);
// w,h是原图的属性.
return Bitmap.createBitmap(bitmap, , , w, h, matrix, true);
} public Bitmap optionsBitmapSize(String imagePath, int screenWidth,
int screenHight) { // 设置解析图片的配置信息
BitmapFactory.Options options = new Options();
// 设置为true 不再解析图片 只是获取图片的头部信息及宽高
options.inJustDecodeBounds = true;
// 返回为null
BitmapFactory.decodeFile(imagePath, options);
// 获取图片的宽高
int imageWidth = options.outWidth;
int imageHeight = options.outHeight;
// 计算缩放比例
int scaleWidth = imageWidth / screenWidth;
int scaleHeight = imageHeight / screenHight;
// 定义默认缩放比例为1
int scale = ;
// 按照缩放比例大的 去缩放
if (scaleWidth > scaleHeight & scaleHeight >= ) {
scale = scaleWidth;
} else if (scaleHeight > scaleWidth & scaleWidth >= ) {
scale = scaleHeight;
}
// 设置为true开始解析图片
options.inJustDecodeBounds = false;
// 设置图片的采样率
options.inSampleSize = scale;
// 得到按照scale缩放后的图片
Bitmap bitmap = BitmapFactory.decodeFile(imagePath, options);
return bitmap;
}

推荐一个程序员网站:

码农网

Java.lang.OutOfMemoryError处理的更多相关文章

  1. java head space/ java.lang.OutOfMemoryError: Java heap space内存溢出

    上一篇JMX/JConsole调试本地还可以在centos6.5 服务器上进行监控有个问题端口只开放22那么设置的9998端口 你怎么都连不上怎么监控?(如果大神知道还望指点,个人见解) 线上项目出现 ...

  2. Eclipse中启动tomcat报错java.lang.OutOfMemoryError: PermGen space的解决方法

    有的项目引用了太多的jar包,或者反射生成了太多的类,异或有太多的常量池,就有可能会报java.lang.OutOfMemoryError: PermGen space的错误, 我们知道可以通过jvm ...

  3. java.lang.OutOfMemoryError: PermGen space及其解决方法

    PermGen space的全称是Permanent Generation space,是指内存的永久保存区域OutOfMemoryError: PermGen space从表面上看就是内存益出,解决 ...

  4. Tomcat报java.lang.OutOfMemoryError: Java heap space错误停止运行如何解决

    最近开发的一个商业项目,部署完成后,经常出现Tomcat挂掉的现象,报的异常是:java.lang.OutOfMemoryError: Java heap space,上网google了一下,了解了一 ...

  5. MyCAT报java.lang.OutOfMemoryError: Java heap space

    早上同事反映,mycat又假死了,估计还是内存溢出,查看了一下错误日志. INFO | jvm | // :: | java.lang.OutOfMemoryError: Java heap spac ...

  6. java.lang.OutOfMemoryError:GC overhead limit exceeded填坑心得

    我遇到这样的问题,本地部署时抛出异常java.lang.OutOfMemoryError:GC overhead limit exceeded导致服务起不来,查看日志发现加载了太多资源到内存,本地的性 ...

  7. [转]Tomcat启动java.lang.OutOfMemoryError: PermGen space错误解决

    原文地址:http://outofmemory.cn/java/OutOfMemoryError/outofmemoryerror-permgen-space-in-tomcat-with-eclip ...

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

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

  9. Spark java.lang.outofmemoryerror gc overhead limit exceeded 与 spark OOM:java heap space 解决方法

    引用自:http://cache.baiducontent.com/c?m=9f65cb4a8c8507ed4fece7631046893b4c4380146d96864968d4e414c42246 ...

  10. Tomcat 启动项目报错 java.lang.OutOfMemoryError: Java heap space

    近日使用myeclipse 部署web项目,启动tomcat时报错: SEVERE: Error waiting for multi-thread deployment of directories ...

随机推荐

  1. 【Thinking in Java-CHAPTER 3】操作符

    优先级 赋值 对象在使用c=d,那么c和d都指向原本只有d指向的那个对象. 方法调用中的别名问题:当一个对象作为参数传递到一个函数中,函数改变了这个参数,则改变了传递进来的对象: 自增和自减 浮点型的 ...

  2. 【cs229-Lecture20】策略搜索

    本节内容: 1.POMDP: 2.Policy search算法:reinforced和Pegasus: 马尔科夫决策过程(Partially Observable Markov Decision P ...

  3. debian软件源source.list文件格式说明

    在安装完debian操作系统之后大家做的第一件事大概就是修改source.list文件了吧,否则你是无法在线更新软件的,那么source.list文件中的各个配置项的具体含义你搞懂了么?下面就以我的s ...

  4. ruby -- 基础学习(二) 外键配置实现级联删除

    该系列学习基于rails4.0 数据表:admins (id, name, address), articles (id, admin_id, title) admin_id 是表articles中的 ...

  5. ruby -- 问题解决(三)编码错误导致无法显示(1)

    从数据库中取得数据显示时报 incompatible character encodings: GBK and ASCII-8BIT 或 incompatible character encoding ...

  6. DDD:聊天笔记

    聚合跟和实体 聚合根是实体. 实体有生命周期,使用标识进行跟踪. 聚合根是全局标识,由仓储或其它服务负责其生命周期. 实体是局部标识,由聚合根负责其生命周期. 为什么能应对复杂度? 纵向.横向.时间维 ...

  7. Appium移动自动化测试(三)--安装Android模拟器

    当Android SDK安装完成之后,并不意味着已经装好了安装模拟器.Android系统有多个版本,所以我们需要选择一个版本进行安装. 第三节  安装Android 模拟器 我这里以Android 4 ...

  8. C中extern的用法

    /*********************************************************************** INPUT3.C -- Input data pars ...

  9. 初涉SQL Server性能问题(1/4):服务器概况

    当你作为DBA时,很多人会向你抱怨:“这个程序数据加载和蜗牛一样,你看看是不是服务器出问题了?”造成这个问题的原因有很多.可能是程序应用服务器问题,网络问题,程序实现方式问题,数据库服务器负荷过重.不 ...

  10. svn状态图标大全

     黄色感叹号(有冲突):--这是有冲突了,冲突就是说你对某个文件进行了修改,别人也对这个文件进行了修改,别人抢在你提交之前先提交了,这时你再提交就会被提示发生冲突,而不允许你提交,防止你的提交覆盖了别 ...