Android优化浅谈之Java代码优化

来源:互联网 发布:单片机新颖毕业设计 编辑:程序博客网 时间:2024/06/05 09:04

  Android优化包括许多方面,就从Java代码优化、内存泄露、UI优化等几个方面。今天主要介绍一下Java代码优化。

  Java代码优化:Java代码优化主要是要一些Java的编程技巧和优化原则。

1、尽量使用static和final修饰符:使用static修饰符可以调高调用的效率且减少空间占用。final变量的值不可被修改、不可被覆盖、不可派生,适当地使用final不仅可以保护重要的逻辑或数据,还可以提高程序的执行效率。

2、尽量使用局部变量:调用方法逻辑时创建的局部变量(临时变量)是保存在栈(Stack)中的,速度要比保存在堆(Heap)中的那些变量快许多,如静态变量、实例变量等。

3、不要过度依赖GC:虽然Java虚拟机自身的GC垃圾回收机制比较完善,但同时也掩盖了一些风险。如短时间内大量的创建对象就可能会消耗过多的系统内存,从而导致内存泄露,因此我们应该养成及时回收不再使用的对象和资源。常见的回收方式是在使用玩变量或对象后,将其手动设置为null。另外,如果程序逻辑使用到数据库连接或I/O流这种大对象时,使用后要及时进行资源释放。

4、优化循环语句:当我们遇到循环或递归逻辑时,需注意。首先,在循环中避免重复运算,如:

//错误写法for (int i=0;i<vector.size();i++){ ...}//正确写法int size = vector.size();for(int i=0;i<size;i++){  ...}

其次,循环逻辑中应尽量避免使用一些开销比较大的操作,如创建对象(new),捕获异常等。进行逻辑计算时应尽量使用基本数据类型,变量或对象使用后要注意资源回收。

5、慎用异常机制:虽然java异常机制非常强大,但执行异常捕获语句和抛出异常的代价很高,建议使用异常机制时尽量把捕获逻辑放在最外层,并只用于错误处理,不用于处理程序逻辑。

6、基本数字类型运算:在编程过程中难免遇到运算逻辑,在处理运算逻辑需要注意。

a、运算速度从快到慢依次是:int、short、byte、long,float和double。

b、除法比乘法慢很多,基本上除法的运算时间是乘法的9倍。

c、long类型的计算很慢,少用。

d、double的运算速度和float相当。

7、字符串操作使用StringBuffer:字符串拼接操作,使用+号拼接比使用StringBuffer的效率慢很多。如:

//低效用法String appendStr = "test";int times = 10000;String str = "";for(int i=0;i<times;i++){    str +=appendStr;}//高效用法String appendStr = "test";int times = 10000;StringBuffer str = new StringBuffer();for(int i=0;i<times;i++){    str.append(appendStr);}

8、合理使用数据集合:Java提供了丰富的数据集合来实现数据存储和复杂逻辑,可大致分为两类,即集合结构(Collection)和图表结构(Map)。如

这些数据集合尽量使用ArrayList和HashMap。

9、使用clone替代new:使用new方法创建对象很耗资源,因为所有类关系链上的构造方法都会被自动调用,但使用clone方法来复制对象不会调用任何类的构造方法,因此在工厂模式下使用clone方法是一个更好的选择。

//低效用法public static Blog getNewBlog (){    return new Blog();}//高效用法private static Blog baseBlog = new Blog();public static Blog getNewBlog (){    return (Blog) baseBlog.clone();}

10、慎用public static final:需慎用的原因有二:如一个数据或变量这样声明了,那么就不能够进行任何修改;这种声明的数据在整个进程被销毁之前都常驻内存。

11、采用对象池提高效率:java中比较常见的对象池有数据库连接池、线程池。

12、不要过都使用OOP:对象既占内存,又销毁资源,因此有些简单的逻辑或运算完全可以使用基本数据类型代替对象。

13、善于使用语言中的工具类也是非常重要的,如android.util、Log日志处理类、Base64编码类以及Timer定时器类等。使用Log打印日志的系统资源开销也不小,所以发布之前最好把程序中的Log调试代码关闭。


0 0
原创粉丝点击