关于Android中内存优化的一些方法

         最近在看内存优化方面的一些知识,虽然很多东西目前来说,多不能完全理解,但是在我看来,至少养成好的编码习惯是第一步:

          1、尽可能少的创建对象。

for(...) {
  A a = new A();
  if (...) {
  list.add(a);
}
}
改为:
for(...) {
  if (...) {
  A a = new A();
  list.add(a);
}
}

          2、如果一定要创建对象,尽量使用局部变量。

          3、将成员缓存到本地;另一个相似的原则是:永远不要在for的第二个条件中调用任何方法。如下面方法所示,在每次循环的时候都会调用getCount()方法,这样做比你在一个int先把结果保存起来开销大很多;同样如果你要多次访问一个变量,也最好先为它建立一个本地变量;

for(int i =0; i <list.count; i++)  {

}
改为:
int len = list.count
for(int i = 0; i < lent; i ++) {

}
            4、使用final修饰变量。

            5、尽量使用StringBuilder和StringBuffer进行字符串连接

         6、单线程应尽量使用HashMap、ArrayList

         7、 尽量避免频繁使用split,如果确实需 要频繁的调用split,可以考虑使用apache的StringUtils.split(string,char)

         8、避免过深的类层次结构和过深的方法调用。

         9、变量只有在用到它的时候才定义和实例化。

         10、 避免在循环体中声明创建对象,即使该对象占用内存空间不大。

 for (int i = 0; i < 10000; ++i) {
  Object obj = new Object();
  System.out.println("obj= " + obj);
  }
  上面的做法会浪费较大的内存空间。正确的做法如下所示:
  Object obj = null;
  for (int i = 0; i < 10000; ++i) {
  obj = new Object();
  System.out.println("obj= "+ obj);
  }
        采用上面的第二种编写方式,仅在内存中保存一份对该对象的引用,而不像上面的第一种编写方式中代码会在内存中产生大量的对象引用,浪费大量的内存空间,而且增大了垃圾回收的负荷。因此在循环体中声明创建对象的编写方式应该尽量避免。

        更多:Java内存优化

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值