Android中图片占用内存的计算
来源:互联网 发布:大智慧股票行情软件 编辑:程序博客网 时间:2024/04/29 08:31
转:http://blog.sina.com.cn/s/blog_4e60b09d01016133.html
在Android开发中,我现在发现很多人还不会对图片占用内存进行很好的计算。因此撰写该博文来做介绍,期望达到抛砖引玉的作用。
一张图片(BitMap)占用的内存=图片长度*图片宽度*单位像素占用的字节数
注:图片长度和图片宽度的单位是像素。
图片(BitMap)占用的内存应该和屏幕密度(Density)无关,虽然我暂时还拿不出直接证据。
inPreferredConfig为Bitmap.Config类型,
Bitmap.Config类是个枚举类型,它可以为以下值
This is very useful to efficiently store masks for instance. No color information is stored. With this configuration, each pixel requires 1 byte of memory.
此时图片只有alpha值,没有RGB值,一个像素占用一个字节Bitmap.Config
ARGB_8888
instead. 这种格式的图片,看起来质量太差,已经不推荐使用。
Each pixel is stored on 2 bytes. The three RGB color channels and the alpha channel (translucency) are stored with a 4 bits precision (16 possible values.) This configuration is mostly useful if the application needs to store translucency information but also needs to save memory. It is recommended to use ARGB_8888 instead of this configuration.
一个像素占用2个字节,alpha(A)值,Red(R)值,Green(G)值,Blue(B)值各占4个bites,共16bites,即2个字节Bitmap.Config
一个像素占用4个字节,alpha(A)值,Red(R)值,Green(G)值,Blue(B)值各占8个bites,共32bites,即4个字节
这是一种高质量的图片格式,电脑上普通采用的格式。它也是Android手机上一个BitMap的默认格式。Bitmap.Config
一个像素占用2个字节,没有alpha(A)值,即不支持透明和半透明,Red(R)值占5个bites
从Android4.0开始,该选项无效。即使设置为该值,系统任然会采用
注:ARGB指的是一种色彩模式,里面A代表Alpha,R表示red,G表示green,B表示blue,其实所有的可见色都是红绿蓝组成的,所以红绿蓝又称为三原色。
A R G B
透明度 红色 绿色 蓝色
透明度 红色 绿色 蓝色
简单点说
另外,需要注意这里的图片占用内存是指在Navtive中占用的内存,当然BitMap使用的绝大多数内存就是该内存。
因为我们可以简单的认为它就是BitMap所占用的内存。
虽然Bitmap在被回收时可以通过BitmapFinalizer来回收内存。但是调用recycle()是一个良好的习惯
在Android4.0之前,Bitmap的内存是分配在Native堆中,调用recycle()可以立即释放Native内存。
从Android4.0开始,Bitmap的内存就是分配在dalvik堆中,即JAVA堆中的,调用recycle()并不能立即释放Native内存。但是调用recycle()也是一个良好的习惯。
通过dumpsys meminfo命令可以查看一个进程的内存使用情况,
当然也可以通过它来观察我们创建或销毁一张BitMap图片内存的变化,从而推断出图片占用内存的大小。
示例:adb shell " dumpsys meminfo com.lenovo.robin"
运行结果。
Applications Memory Usage (kB):
Uptime: 18696550 Realtime: 18696541
** MEMINFO in pid 7985 [com.lenovo.robin] **
Death Recipients: 1
关于内存统计的更多内容请参考《Android中如何查看内存》
0 0
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Android中图片占用内存的计算
- Thinkphp3.2.2多语言包实现
- leetcode--Insertion Sort List
- Perl Learning 1 Scalar Data
- viewPager 指针实现关键代码
- XCode快捷键
- Android中图片占用内存的计算
- 数据库基础知识总结
- 绝对不要在析构函数中释放单例-----这个至少3000元的bug让人蛋疼两三天
- Ubuntu中安装Git及其相关的配置
- [转]学JS必看
- windows下使用cmd(命令行)发送邮件
- leetcode--Sort List
- java的异常处理机制
- Java读写CSV格式文件(opencsv)