1. 尽量指定类的final修饰符,指定一个类的final,则类中的方法都为final。Java编译器会尽量内联(inline)所有的final方法,内联能使性能提高。
2. 尽量使用局部变量,调用方法时传递的参数及调用时创建的临时变量都保存在栈中,存取速度快。(静态变量、实例变量都在堆上创建,速度慢)
3. 在进行Java的数据库连接和I/O流操作时,应及时关闭不需要的连接或流以释放资源。
4. 减少对变量的重复计算,例:for(int i=0; i<list.size(); i++){}应改写成for(int i=0, len=list.size(); i<len; i++){}
5. Lazy loading 策略,在需要时再创建变量或对象,例:
String str="aaa";
if(i==1){
list.add(str);
}
//应写成
if(i==1){
String str="aaa";
list.add(srt);
}
6. 谨慎使用异常,异常对性能不利,抛出异常要创建一个新的对象,
7. 在循环外使用try{}catch(){}
8. 尽量重用对象,例String对象使用中出现字符串连接情况,应用StringBuffer或StringBuilder代替。系统要花时间生成对象,之后还要对这些对象进行垃圾回收和处理。例:采用对象池技术,提高对象的利用率
Enemy[] enemies = new Enemy[5];
for(int i=0; i<5; i++){
enemies[i] = new Enemy();
}
在类Enemy中增加标识属性used和带参数的reset方法是对象可重置到初始状态,在在载入时初始化对象池,在需要创建对象时,从对象池获取一个未被使用的对象并使用reset方法初始化,在需要释放对象时,只需将标志位修改,以供下次使用。
9. 尽可能地使用基本数据类型代替对象,例:int[][] bullets = new int[][];