计算机图形表示的原理
加载大图出现OOM
缩放加载大的图片资源
创建一个原图的副本
图形处理的常用的API
傻瓜版美图秀秀
画画版
计算机图形表示的原理首先要明确的一点是,一张图片的在内存中存储所需的大小和图片在屏幕设备上完整显示所需的内存大小是有非常大的差异的。如下图,从中我们可以清晰的看出这张图片,在硬盘上所占的存储空间是303KB,也就是310272个字节。但是如果想把这样图片完整的展示到屏幕...
分类:
移动开发 时间:
2015-03-19 00:59:05
阅读次数:
313
在手机APP的开发中,RAM分配是开发的时候需要时时刻刻考虑的关键问题,最近做的工程中发现加载的图片太多或图片过大时
经常出现OOM问题,找网上资料也提供了很多方法,但自己感觉有点乱,特此,今天在不同型号的三款安卓手机上做了测试,因为有
效果也有结果,今天就做个详细的总结,以供朋友们共同交流学习,也供自己以后在解决OOM问题上有所提高,大家耐心看,肯定有
收获的,里面的很多东西也是学习参考网络资料使用的,先来简单讲下下:
一般我们大家在遇到内存问题的时候常用的方式网上也有相关资料,大体如下几种:
...
分类:
移动开发 时间:
2015-03-18 15:58:35
阅读次数:
235
下面我们回到我们的主题上来:怎样获取图片的大小?思路很简单: 首先我们把这个图片转成Bitmap,然后再利用Bitmap的getWidth()和getHeight()方法就可以取到图片的宽高了。新问题又来了,在通过BitmapFactory.decodeFile(Stringpath)方法将突破转成...
分类:
其他好文 时间:
2015-03-17 23:10:14
阅读次数:
115
当我们在做项目过程中,一遇到显示图片时,就要考虑图片的大小,所占内存的大小,原因就是Android分配给Bitmap的大小只有8M,试想想我们用手机拍照,普通的一张照片不也得1M以上,所以android处理图片时不得不考虑图片过大造成的内存异常。 那时候只是简单地缓存图片到本地 然后将图片进行压缩,...
分类:
移动开发 时间:
2015-03-17 19:58:14
阅读次数:
174
效果图:
在平时加载图片时,我会使用SetImageBitmap、setImageResource、BitmapFactory.decodeResource来设置一张图
片通过以上方法来设置图片时,会通过Java层的createBitmap来完成,这样的话会消耗很多内存,容易导致
OOM(Out Of Memory),因此推荐使用BitmapFactory.O...
分类:
移动开发 时间:
2015-03-15 23:04:15
阅读次数:
279
ListView优化2:如果一个listView不做任何的优化,而且有很多的条目,当我们快速的拖动listView的界面的时候,就不断的GCGC(Garbage Collection )垃圾回收,当GC到某个时候就会(OOM)outofmemory内存溢出,应用程序也就会随之挂掉,产生这个问题的原因...
分类:
其他好文 时间:
2015-03-15 12:16:11
阅读次数:
145
最近除了忙着项目开发上的事情,还有就是准备我的毕业论文,有一小段时间没写博客了,今晚难得想总结一下,刚好又有一点时间,于是凑合着来一篇,好了,唠叨话不多说,直接入正题。从事Android移动端的开发以来,想必是经常要与内存问题打交道的,说到Android开发中遇到的内存问题,像Bitmap这种吃内存的大户稍微处理不当就很容易造成OOM,当然,目前已经有很多知名的开源图片加载框架,例如:ImageLo...
分类:
移动开发 时间:
2015-03-14 06:14:08
阅读次数:
9286
上篇文章讲解了内存管理中的OOM介绍以及如何的避免内存泄露,本文续写代码优化和图片管理
三、代码优化
1、代码优化
2、回收不可见的界面资源
这个地方我想说得是fragment,fragment销毁只是界面的销毁,他的数据还是会保留在内存中的,当fragment进行切换的时候,前一个fragment的ui会销毁掉,但是数据不会丢失。所以当一个fragment不再需要...
分类:
移动开发 时间:
2015-03-10 12:16:39
阅读次数:
255
线上java应用报永久代(PermGen)OOM,遇到永久代OOM那就没啥办法了,只能为永久代扩容。
要做的就是改大PermSize这个参数。发现这个实例的启动参数里并没有PermSize的定义。那么这个实例一定是用的永久代的默认大小。永久代的默认大小是多少呢?百度的一下,JDK1.6的默认大小是82M。果真如此吗?在这个实例执行 stat
-gccapacity pid ,命令结...
分类:
编程语言 时间:
2015-03-09 20:54:43
阅读次数:
178
Android项目中由于加载的图片比较多,所以经常报出内存溢出的错误,当项目中包含大量图片,或者图片过大,可能会oom,常用胡解决方法如下:
方法1 : 等比例缩小图片
BitmapFactory.Options options = new BitmapFactory.Options();
options.inSamp...
分类:
移动开发 时间:
2015-03-09 14:34:42
阅读次数:
139