Android 内存优化

简述:

内存溢出 out of memory:是指程序在申请内存时,没有足够的内存空间供其使用,出现out of memory;

内存泄露 memory leak:是指程序在申请内存后,无法释放已申请的内存空间,一次内存泄露危害可以忽略,但内存泄露堆积后果很严重,无论多少内存,迟早会被占光。

今天主要讲的是内存泄漏,这个问题在开发中是挺常见的,因为避免不了的我们要使用到:单例,动画,广播,数据库操作,流的读写,EventBus等开源的消息发送框架,Handler使用,线程池的创建销毁,for循环.......等等。现在对以上的这些实例进行总结如下:

1.注册:像广播,以及自定义观察者的自定义工具或者开源工具,在Destrory时候进行反注册。

2.handle消息,网络:对于Handler的延迟消息,或者网络请求这种,在Destroy时候移除所有消息,网络请求的则取消请求。

3.流:对于数据库,I/O流 文件流等操作一定要在不用的时候关掉流。

4.线程:耗时操作要放在子线程中去,另外线程的创建个销毁是很消耗性能的,所以如果使用频繁的情况下,建议最好创建一个线程池,这个可以看Ansyctask源码的线程池的创建。

5.编写代码:内部类要是静态内部类,否则会隐式持有外部类导对象导致泄露。  for循环千万不要不停的new 新的对象,而是在for的外部创建一个对象引用,在for进行赋值使用。

6.单例:是和APP生命周期一样的,所以创建单利的时候不要传进去某个Activity之类的,否则会一直持有引用。

在开发代码时候就要考虑到这些问题,养成一个良好的代码习惯。说到这个代码习惯,个人感觉,如果是一个人开发一个小项目,代码规范即使不是那么的整洁影响也不是多大。但是如果项目很大,参与的人很多,使用的技术五花八门,同样的工具,封装等不统一,是很郁闷的,最后的结果就是鱼腩。所以,大的项目一开始的时候,几个比较大的架构就得搭建好,统一好。另外在开发的时候涉及到的公共的工具,封装之类的最好维护一个文档。跑偏了!

 

 

 

    

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值