java代码优化

来源:互联网 发布:飞行器设计知乎 编辑:程序博客网 时间:2024/04/29 09:22

可供程序利用的资源(内存、CPU时间、网络带宽等)是有限的,优化的目的就是让程序用尽可能少的资源完成预定的任务。

优化包含两方面内容:减小代码的体积,提高代码的运行效率。

1、     尽量指定类的final修饰符,带有final修饰符的类是不可派生的。如果指定一个类为final,则该类所有的方法都是final。

2、     尽量重用对象。特别是String 对象的使用中,出现字符串连接情况时应用StringBuffer 代替。系统不仅要花时间生成对象,以后可能还需花时间对这些对象进行垃圾回收和处理。

3、     尽量使用局部变量,调用方法时传递的参数以及在调用中创建的临时变量都保存在栈(Stack)中,速度较快。其他变量,如静态变量、实例变量等,都在堆(Heap)中创建,速度较慢。

4、     java中内嵌的SQL语句尽量使用大写的形式,以减轻ORACLE解析器的解析负担。

5、     Java 编程过程中,进行数据库连接、I/O流操作时务必小心,在使用完毕后,即使关闭以释放资源。

6、     减少对变量的重复计算
例如:for(int i = 0;i < list.size; i ++) {
             …
}
应替换为:
for(int i = 0,len = list.size();i < len; i ++) {
             …
}

7、尽量采用lazy loading 的策略,即在需要的时候才开始创建。
      if(i == 1) {
           String str = "....";
}

7      合理使用 java.util.Vector

 

 

8、乘法和除法
用移位操作替代乘法操作可以极大地提高性能。
result = val << 3;
不做乘以8的操作,而是改用等价的左移3位操作,每左移1位相当于乘以2。右移1位操作相当于除以2。(应加上一些注释)

 

9 在JSP页面中关闭无用的会话

  session是server端程序调用HttpServletRequest.getSession(true)时才被创建,如果JSP没有显示的使用 <%@pagesession="false"%> 关闭session,则JSP文件在编译成Servlet时将会自动加上这样一条语句HttpSession session = HttpServletRequest.getSession(true);这也是JSP中隐含的session对象的来历。由于session会消耗内存资源,因此,如果不打算使用session,应该在所有的JSP中关闭它。
对于那些无需跟踪会话状态的页面,关闭自动创建的会话使用如下page指令:<%@ page session="false"%>

HttpSession.invalidate()方法清除会话

 

10  JDBC与I/O
如果访问一个规模很大的数据集,应考虑块提取方式。默认,JDBC每次提取32行数据。举例来说,遍历一个5000行的记录集,JDBC必须调用数据库157次才能提取到全部数据。如果把块大小改成512,则调用数据库的次数将减少到10次。

 

11  HashMap遍历

 

12  使用HashMap 和ArrayList ,非必要,不推荐使用HashTable和Vector(同步,牺牲性能)