概述
1.堆(HEAP)是VM中占用内存最多的部分,通常是动态分配的。堆的大小不是一成不变的,通常有一个分配机
2.安卓系统对每个程序的堆内存上限限定为Max Heap Size,是堆内存的上限值,老版本Android的缺省值是16M,后来逐渐增大,但是都会有一个限制(要确定这个限制,可以new一个byte数组,看多大时会oom),app申请的堆内存大于堆内存,就会造成内存溢出(oom)
3.堆内存的大小一般是不能更改的,VMRuntime.getRuntime().setMinimumHeapSize(NewSize);这个方法其实只是改变了堆的下限值,它可以防止过于频繁的堆内存分
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图片压缩之图片和内存基础的全部内容,希望文章能够帮你解决android图片压缩之图片和内存基础所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复