Android 内存优化(从网上搜集整理的,就是为了敲一遍加深一下记忆)

1.避免创建不必要的对象,比如尽量使用substring函数取得原始数据的一个子串,而不是为子串另外建立一份拷贝;

2.使用静态方法代替虚拟方法,比如不需要访问对象的字段时,将此方法设置为静态,这样调用这个方法时就不需要更新这个对象的状态;

3.将成员变量缓存到本地,因为访问对象的成员变量比访问本地变量慢得多;比如for(int  i=0;i<list.size();i++) ,改写成int length=list.size; for(int  i=0;i<lengthi++);

4.避免使用浮点型,浮点型比整形慢大概2倍;尽量使用乘法而不是除法,比如a*0.5而不是a/2;因为有的芯片有硬件乘法,而缺少硬件除法;

5.复杂的算法用c,c++完成,然后用JNI调用;

6.减少不必要的全局变量,尽量避免static成员变量引用资源耗费多的实例,比如context;

8.不要过多指望gc,比如对图片,if(bitmap.isrecycled==false) { bitmap.recycle() bitmap=null}; .对大图片进行低质量压缩,二次采样

BitmapFactory.Options options=new BitmapFactory.Options();

options.inSampleSize=10;

Bitmap bm=BitmapFactory.decodeFile(,options);

imageview.setImageBitmap(bm);

bm.recycle();

bm=null;

  1. ImageView i = new ImageView(mContext);  
  2.           BitmapFactory.Options options=new BitmapFactory.Options();  
  3.           options.inSampleSize = 10;  
  4.           //貌似这个options的功能是返回缩略图,10即表示长和宽为原来的1/10,即面积为原来的1/100  
  5.           //缩略图可以减少内存占用  
  6.           Bitmap bm = BitmapFactory.decodeFile(lis.  
  7.                                 get(position).toString(),options);  
  8.           i.setImageBitmap(bm);  
  9.           bm.recycle(); 

9.了解java的4中引用方式,强引用,软引用,弱引用,虚引用;

强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止, 也不会靠随意回收具有强引用的对象来解决内存不足的问题。

如果一个对象只具有软引用,则内存空间足够,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。只要垃圾回收器没有回收它,该对象就可以 被程序使用。软引用可用来实现内存敏感的高速缓存。

在垃圾回收器线程扫描它所管辖的内存区域的过程中,一旦发现了只具有弱引用的对象,不管当前内存空间足够与否,都会回收它的内存。不过,由于垃圾回收器是一个 优先级很低的线程,因此不一定会很快发现那些只具有弱引用的对象。

顾名思义,就是形同虚设。与其他几种引用都不同,虚引用并不会决定对象的生命周期。如果一个对象仅持有虚引用,那么它就和没有任何引用一样,在任何时候都可能 被垃圾回收器回收。了解并熟练掌握这4中引用方式,选择合适的对象应用方式,对内存的回收是很有帮助的。

10.使用实体类比接口好,比如能确定使用ArrayList的地方不要用List,因为接口的引用会比实体的引用多花1倍的时间;

11.适量使用缓存,不要过多使用,不用时清空缓存

12.关闭资源对象,对sqlite,cusor,文件,I/O操作要记得显示关闭。

13.使用relativeLayout减少视图嵌套

14.多线程解决复杂计算,使用线程池,避免频繁的网络请求

15.对于listview使用viewholder保存数据结构,复用convertview;

16.在程序中注册的对象,不需要的时候在程序中明确的取消注册

17.android 性能优化工具 Traceview,Systrace 参考http://www.open-open.com/lib/view/open1370251009945.html#_label3


参考资料 :http://www.cnblogs.com/dyllove98/archive/2013/08/01/3231097.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值