Android - 一张图片到底占用多少内存

1. 概述


在做内存优化时,一般只要处理两点,应该就解决了绝大部分的问题。第一是内存泄露,第二就是图片问题。解决图片问题是实实在在能够看得见的,减少内存的占用。假设有一张图片是 600 * 800,假设占用空间100k。

2. 容易混淆的概念?


2.1:图片内存大小与占用空间大小?

1>:图片内存大小:指图片加载到内存中,占用内存的大小;
2>:占用空间大小:指在磁盘上占用的空间;

2.2:一张图片占多少内存?

图片高度 * 图片宽度 * 一个像素占用内存大小
上边图片大小 = 600 * 800 * 4byte = 1875k = 1.83M
4byte和图片的编码格式有关系,可参照大神文章:
http://www.cnblogs.com/popfisher/p/6770018.html

2.3:图片所在目录对内存的影响?

影响图片最终大小有2个因素:
图片存放的目录(xhdpi、xxhdpi、xxxhdpi)与手机屏幕密度

比如把上边图片放到 xxhdpi目录:
800 * 600 * 4byte = 1.83M
比如把上边图片放到 xxxhdpi目录:
800 * 1.5 * 600 * 1.5 * 4byte = 1.83 * 2.25M = 4.12M

3. 总结


1>:一定要避免使用大图片,可以使用 .9图片,因为 .9图片本身比较小,
2>:能在自定义View中的onDraw()方法中绘制的,就尽量绘制,不要直接加载大图片;

4. 注意


绝大多数情况,占用内存多,发生OOM都是因为对图片使用不当。

你可能感兴趣的:(Android - 一张图片到底占用多少内存)