android图片压缩之图片和内存基础

转载 2015年11月19日 10:26:24

1.堆(HEAP)是VM中占用内存最多的部分,通常是动态分配的。堆的大小不是一成不变的,通常有一个分配机制来控制它的大小。比如初始的HEAP是4M大,当4M的空间被占用超过75%的时候,重新分配堆为8M大;当8M被占用超过75%,分配堆为16M大。倒过来,当16M的堆利用不足30%的时候,缩减它的大小为8M大。重新设置堆的大小,尤其是压缩,一般会涉及到内存的拷贝,所以变更堆的大小对效率有不良影响

2.安卓系统对每个程序的堆内存上限限定为Max Heap Size,是堆内存的上限值,老版本Android的缺省值是16M,后来逐渐增大,但是都会有一个限制(要确定这个限制,可以new一个byte数组,看多大时会oom),app申请的堆内存大于堆内存,就会造成内存溢出(oom)

3.堆内存的大小一般是不能更改的,VMRuntime.getRuntime().setMinimumHeapSize(NewSize);这个方法其实只是改变了堆的下限值,它可以防止过于频繁的堆内存分配(根据第1点,如果开始就设置堆为8m,当内存为7m的时候,是不会重新分配内存大小的,如果是默认的4m,就会重新分配一次,可能引发内存拷贝,影响效率),当设置最小堆内存大小超过上限值时仍然采用堆的上限值,对于内存不足没什么作用。

4.默认情况下,bitmap每个像素点占用4个字节(ARGB_8888),一张3543×3503的图片差不多在内存中占用44M(3543×3503*4byte,加载这个bitmap时,还要申请其他空间,所以实际要申请的堆内存还远远大于这个值)的空间(存放在磁盘也是压缩后的,比如jpg图片,就是jpg算法压缩后存放到磁盘的),这样用bitmap加载大图片的时候,就会引发oom

5.ARGB_4444:每个像素占四位,即A=4,R=4,G=4,B=4,那么一个像素点占4+4+4+4=16位 

6.Runtime.getRuntime().maxMemory() 可以获取app堆内存的最大大小

Android图片压缩(质量压缩和尺寸压缩)

在网上调查了图片压缩的方法并实装后,大致上可以认为有两类压缩:质量压缩(不改变图片的尺寸)和尺寸压缩(相当于是像素上的压缩);质量压缩一般可用于上传大图前的处理,这样就可以节省一定的流量,毕竟现在的手...
  • highboys
  • highboys
  • 2016年11月01日 22:22
  • 2621

android-----解决Bitmap内存溢出的一种方法(图片压缩技术)

我们在平常使用Bitmap的过程中经常会遇到OOM异常,为此困扰了我两三天时间,接下来把我自己的解决方法讲述一下:         首先来看看为什么使用Bitmap会导致OOM异常的,假如采用Bi...
  • hzw19920329
  • hzw19920329
  • 2016年05月27日 20:53
  • 3049

Android使用BitmapFactory.Options压缩图片解决加载大图片内存溢出

由于Android对图片使用内存有限制,若是加载几兆的大图片便内存溢出。Bitmap会将图片的所有像素(即长x宽)加载到内存中,如果图片分辨率过大,会直接导致内存溢出(java.lang.OutOfM...
  • heng615975867
  • heng615975867
  • 2016年01月26日 21:10
  • 1718

Android图片与内存基础知识

Android图片的使用和处理是一个比较敏感的话题,因为图片确实比较吃内存,很容易导致OOM。下面是我关于Android图片知识的一些总结: 一、图片存在的几种形式 1、文件的形式存在于SD卡或手...
  • yus201120
  • yus201120
  • 2016年04月05日 18:59
  • 173

Bitmap,jpg,png区别以及在Android上实现不载入内存压缩图片

图片有两种使用的场景:一种是在硬盘上的存储格式,一个是在内存的展开格式。 一、在内存中的图片          因为需要知道图片的所有信息,所有在内存中,图片一般是展开的。那以带透明的...
  • zaizai2154365
  • zaizai2154365
  • 2017年04月25日 16:25
  • 586

Android的Bitmap图片压缩与内存的关系

我们做Android应用的时候最不可避免的就是与图片打交道,而图片通常又是应用内存开销,影响性能的大头,因而这也是网上的帖子关于图片方面的内容热度比较高的原因之一。另外,发现身边的一些做Android...
  • luoshaoyun
  • luoshaoyun
  • 2016年12月01日 16:02
  • 212

Android:ListView异步加载图片(实现网络下载、存储本地、缓存内存、压缩显示)

Android:ListView异步加载图片(实现网络下载、存储本地、缓存内存、压缩显示)...
  • a526001650a
  • a526001650a
  • 2016年11月21日 11:46
  • 275

Android 图片压缩、内存计算

再平时开发中肯定都会用到图片相关知识,而平时大多都只会关注实现方面,但一些理论对于面试和更深入高级实现就很有用,比如很多第三方组件很多都已经实现,本篇文章先从图片加载内存计算、图片压缩、图片另存、图片...
  • Apple_hsp
  • Apple_hsp
  • 2016年09月20日 16:05
  • 539

Android图片压缩及内存缓存

Android图片压缩Android中提供的对图像的解析BitmapFactory类。直接上代码,以作为记录. /** * 根据普通需要显示的宽和高进行压缩 * * @...
  • w627947015
  • w627947015
  • 2016年03月21日 22:09
  • 443

Android开发基础 调用相机 系统相册(并对图片进行压缩处理)

前言:做了好久的安卓了,一直想写点东西分享下。但是又总觉得自己学的还不够好,说出来有可能会误导人,所以一直都没有发,最近在项目中遇到了最多的问题就是关于图片的问题,应该算是比较简单的了,拿出来跟大家分...
  • L_zhp
  • L_zhp
  • 2016年03月10日 15:05
  • 3590
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android图片压缩之图片和内存基础
举报原因:
原因补充:

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