Android 内存优化的那些事

我开发有几年了,提到内存优化 ,也是一脸蒙蔽的样子,今天找了书详细看了一下。


1.什么是内存:

1> 寄存器(Registers)

2> 栈(Stack)

3> 堆(Heap)

4> 静态存储区域 (Static Field)

5> 常量池 (Constant Pool)

2.内存优化实例:

我们从 Bitmap 和 代码 两个角度来优化

1>Bitmap 是造成内存占用过高,甚至造成OOM。我们在使用的时候的一些技巧:

(1)使用适当分辨率和大小的图片。

不同分辨率的图片放到不通的文件夹下面,在对图片画质不是特别严格的地方使用压缩图片,缩略图(thumbnails),在需要展示原图的时候再去显示原图。

(2)及时回收内存。

使用完Bitmap以后,及时使用bitmap.recycle ()放大释放内存资源。3.0以后,bitmap放到堆中,其内存由gc管理,就不需要进行释放了。

(3)使用图片缓存。

内存缓存(LruCache)和硬盘缓存(DiskLruCache)。

2> 代码优化:

任何的java类豆浆占用500字节的内存空间,创建一个实例,大概消耗15字节的内存呢。我们可以从代码上优化:

(1)对常量是由static修饰。

(2)使用静态方法,比普通方法提高15%左右访问速度。

(3)减少不必要的成员变量,如果一个变量可定义为局部,不建议定义为全局。

(4)减少不必要的对象,使用基础类型会比使用对象更节省资源,同时避免频繁创建短作用域的变量。

(5)尽量不使用枚举,少用迭代器。

(6)避免使用IOC

(7)对Cursor,Receiver,Sensor,File 等对象要非常注意他们的创建,回收和注册。

(8)使用SurfaceView 替换V借我进行大量的,频繁的绘图操作。

(9)尽量使用视图缓存,而不是每次都执行inflace()方法解析视图。

(10)RenderScript OpenGL 绘制非常复杂的绘图操作。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值