性能优化4--Bitmap内存优化

Posted ganchuanpu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了性能优化4--Bitmap内存优化相关的知识,希望对你有一定的参考价值。

1.Bitmap在Android虚拟机中的内存分配

技术分享图片
1android3.0之前,Bitmap的内存分配分为两部分,一部分是分配在Dalvik的VM堆中。而像素数据的内存是分配在Native堆中,而到了Android3.0之后。Bitmap的内存则已经所有分配在VM堆上。这两种分配方式的差别在于,Native堆的内存不受Dalvik虚拟机的管理。我们想要释放Bitmap的内存,必须手动调用Recycle方法。而到了Android 3.0之后的平台,我们就能够将Bitmap的内存全然放心的交给虚拟机管理了,我们仅仅须要保证Bitmap对象遵守虚拟机的GC Root Tracing的回收规则就可以。
View Code

 

2.缓存

技术分享图片
有时候,可能需要在一个Activity里多次用到同一张图片。比如一个Activity会展示一些用户的头像列表,而如果用户没有设置头像的话,则会显示一个默认头像,而这个头像是位于应用程序本身的资源文件中的。
如果有类似上面的场景,就可以对同一Bitmap进行缓存。如果不进行缓存,尽管看到的是同一张图片文件,但是使用BitmapFactory类的方法来实例化出来的Bitmap,是不同的Bitmap对象。缓存可以避免新建多个Bitmap对象,避免内存的浪费。
经验分享:
    Web开发者对于缓存技术是很熟悉的。其实在Android应用开发过程中,也会经常使用缓存的技术。这里所说的缓存有两个级别,一个是硬盘缓存,一个是内存缓存。比如说,在开发网络应用过程中,可以将一些从网络上获取的数据保存到SD卡中,下次直接从SD卡读取,而不从网络中读取,从而节省网络流量。这种方式就是硬盘缓存。再比如,应用程序经常会使用同一对象,也可以放到内存中缓存起来,需要的时候直接从内存中读取。这种方式就是内存缓存。
View Code

 

3.压缩

 

 

 

https://www.jb51.net/article/36631.htm

以上是关于性能优化4--Bitmap内存优化的主要内容,如果未能解决你的问题,请参考以下文章

iOS 性能优化

优化性能和优化内存有啥区别?

Android APP性能优化之内存优化

Android APP性能优化之内存优化

Tomcat性能优化及JVM内存工作原理

android内存优化3—从代码角度进行优化