Open bingoogolapple opened 8 years ago
Android中一张图片(Bitmap)占用的内存=图片长度 x 图片宽度 x 单位像素占用的字节数 注:图片长度和图片宽度的单位是像素。
创建一个Bitmap时,其单位像素占用的字节数由其参数BitmapFactory.Options的inPreferredConfig变量决定。inPreferredConfig为Bitmap.Config类型,它可以为以下值
另外,需要注意这里的图片占用内存是指在Navtive中占用的内存,当然Bitmap使用的绝大多数内存就是该内存。 因为我们可以简单的认为它就是Bitmap所占用的内存。 Bitmap对象在不使用时,我们应该先调用recycle(),然后才它设置为null。 虽然Bitmap在被回收时可以通过BitmapFinalizer来回收内存。但是调用recycle()是一个良好的习惯。 Android 2.3 之前 Bitmap 的引用是放在堆中的,而 Bitmap 的数据部分是放在栈中的,需要用户调用recycle 方法手动进行内存回收,而在 Android 2.3 之后,整个 Bitmap 包括数据和引用都放在了堆中
打印当前程序占用的内存
public static void printMem(String when) { //程序可用的最大内存 float maxMem = Runtime.getRuntime().maxMemory() / 1024 / 1024; //程序当前占用的内存 float totalMem = Runtime.getRuntime().totalMemory() / 1024 / 1024; //freeMem != maxMem - totalMem //我理解 freeMem应该是 当前分配给该程序的内存 - totalMem, 当前分配给程序的内存时动态的(在小于maxMem范围内) //同virtualbox安装的ubuntu虚拟机占用内存类似,设置个最大内存,但实际占用内存时动态分配的 float freeMem = Runtime.getRuntime().freeMemory() / 1024 / 1024; bm(when + ": maxMem | totalMem | freeMem : " + maxMem + "M|" + totalMem + "M|" + freeMem + "M"); }
Android图片下载优化 非常全面的 Android Bitmap 知识点梳理
Android中图片占用内存的计算
Android中一张图片(Bitmap)占用的内存=图片长度 x 图片宽度 x 单位像素占用的字节数 注:图片长度和图片宽度的单位是像素。
创建一个Bitmap时,其单位像素占用的字节数由其参数BitmapFactory.Options的inPreferredConfig变量决定。inPreferredConfig为Bitmap.Config类型,它可以为以下值
另外,需要注意这里的图片占用内存是指在Navtive中占用的内存,当然Bitmap使用的绝大多数内存就是该内存。 因为我们可以简单的认为它就是Bitmap所占用的内存。 Bitmap对象在不使用时,我们应该先调用recycle(),然后才它设置为null。 虽然Bitmap在被回收时可以通过BitmapFinalizer来回收内存。但是调用recycle()是一个良好的习惯。 Android 2.3 之前 Bitmap 的引用是放在堆中的,而 Bitmap 的数据部分是放在栈中的,需要用户调用recycle 方法手动进行内存回收,而在 Android 2.3 之后,整个 Bitmap 包括数据和引用都放在了堆中