Android学习 ——引用图片导致内存溢出java.lang.OutOfMemoryError

今天遇到这个问题就是从一个输入流里调用BitmapFactory.decodeFile(name)得到一个bitmap报的错。第一次调用都没问题,第二次再次调用就会报上面那个内存溢出的问题。而且有的手机报有的手机不报。研究了半天终于解决。首先分析了下原因,应该是图片占用的内存超过了系统虚拟机可分配的最大限制。不同手机可能分配的最大值不一样。后来找到解决办法主要是设置BitmapFactory.Options。

 BitmapFactory.Options option = new BitmapFactory.Options();
        option.inSampleSize = 4;
        try {
            Bitmap bmp = BitmapFactory.decodeFile(Path,option);
            holder.icon.setImageBitmap(bmp);
        } catch (OutOfMemoryError err) 
       {}

有的说要加上bitmapOptions.inJustDecodeBounds = true;但是我加上后得到的bitmap就为null。去掉之后就可以。按照上面的方法就解决问题了。最好把bitmap在不用的时候回收一下:

if (bitmap != null && !bitmap.isRecycled())

bitmap.recycle();

时间: 2024-10-05 23:48:39

Android学习 ——引用图片导致内存溢出java.lang.OutOfMemoryError的相关文章

【转】Java内存溢出(java.lang.OutOfMemoryError)问题及其解决方法

Java内存溢出(java.lang.OutOfMemoryError)问题及其解决方法 内存溢出有两种情况,如下: 相关配置以Tomcat环境为例 一.java.lang.OutOfMemoryError: PermGen space PermGen space的全称是Permanent Generation space,是指内存的永久保存区域,这块内存主要是被JVM存放Class和Meta信息的. Class在被Loader时就会被放到PermGen space中,它和存放类实例(Insta

Android加载图片导致内存溢出(Out of Memory异常)

Android在加载大背景图或者大量图片时,经常导致内存溢出(Out of Memory  Error),本文根据我处理这些问题的经历及其它开发者的经验,整理解决方案如下(部分代码及文字出处无法考证):  方案一.读取图片时注意方法的调用,适当压缩  尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗

图片--Android加载图片导致内存溢出(Out of Memory异常)

Android在加载大背景图或者大量图片时,经常导致内存溢出(Out of Memory  Error),本文根据我处理这些问题的经历及其它开发者的经验,整理解决方案如下(部分代码及文字出处无法考证):  方案一.读取图片时注意方法的调用,适当压缩  尽量不要使用setImageBitmap或setImageResource或BitmapFactory.decodeResource来设置一张大图,因为这些函数在完成decode后,最终都是通过java层的createBitmap来完成的,需要消耗

Java内存溢出java.lang.OutOfMemoryError: PermGen space

今天把以前的一个项目部署在tomcat,启动没问题.因为用到了webservice,当调用webservice中的方法时一直报内存溢出异常 Exception in thread "http-bio-8087-exec-3"  java.lang.OutOfMemoryError: PermGen space 网上介绍的该内存什么的都试了一遍,然而并没有什么用,首先我得代码没错,调用远程服务方法什么的都对 修改内存版: Xms128m -Xmx1024m -XX:MaxPermSize

Tomcat内存溢出(java.lang.OutOfMemoryError: PermGen space)

Tomcat启动时报如下错误:     java.lang.OutOfMemoryError: PermGen space 解决办法:     配置相关内存大小.其中按照启动tomcat的不同方式,分如下三种情况     a):如果是eclipse的tomcat插件启动tomcat,在“window”菜单-“Preferences”-“Tomcat”-“JVM Settings”中添加JVM参数如下即可:         -Xms128M -Xmx512M -XX:PermSize=128M -

解决eclipse maven install 造成JVM 内存溢出(java.lang.OutOfMemoryError: Java heap space)

maven install 报错信息: The system is out of resources.Consult the following stack trace for details.java.lang.OutOfMemoryError: Java heap space at java.util.HashMap.createEntry(HashMap.java:897) at java.util.HashMap.addEntry(HashMap.java:884) at java.ut

eclipse中内存溢出java.lang.OutOfMemoryError: PermGen space解决

设置tomcat的时候,应该点击server的配置,配置下我标红的地方就好了. -Xms256M -Xmx512M -XX:PermSize=256m -XX:MaxPermSize=512m

WPF循环加载图片导致内存溢出的解决办法

程序场景:一系列的图片,从第一张到最后一张依次加载图片,形成"动画". 生成BitmapImage的方法有多种: 1. var source=new BitmapImage(new Uri("图片路径",UriKind.xxx)); 一般的场景使用这种方法还是比较方便快捷,但是对于本场景,内存恐怕得爆. 2. var data =File.ReadAllBytes("图片路径"); var ms = new System.IO.MemoryStr

myEclipse开发内存溢出解决办法myEclipse调整jvm内存大小java.lang.OutOfMemoryError: PermGen space及其解决方法

摘要: tomcat部署多个项目后,启动tomcat正常,访问项目时却会出现该错误在网上查了查又试了好几次,才解决,将解决方法记录下来,以方便以后查看或让遇到同样问题的朋友有个参考 PermGen space是啥就不说了,网上找找大堆,感觉也没必要记这些个概念 问题的根源就是JVM的内存不够用了!!!解决方法: *********************************************************************************************