一些小细节让你的Java程序性能大幅提高

来源:互联网 发布:淘宝api查询商品 编辑:程序博客网 时间:2024/05/22 02:04

1、尽量给类、方法添加final修饰符。java编译器会寻找机会内联所有的final方法,能提升效率。

2、尽量重用对象。拼接字符串时应该使用StringBuilder/StringBuffer。

3、尽可能使用局部变量,局部变量在栈中生成,速度快;其他成员变量、静态变量在堆中,随着方法结束,局部变量就没了,不需要做垃圾回收。

4、及时关闭流。

5、尽量减少对变量的重复计算。如for循环中的s.length()。

6、尽量采用懒加载的策略,即在需要的时候才创建。

7、慎用异常,抛出异常后,Java虚拟机必须调整堆栈。

8、不要再循环中使用try...catch,把它放在循环外层。

9、若能估计待添加对象集合的长度,为底层以数组方式实现的集合和工具类指定初始长度。

10、当复制大量数据的数组时,使用System.arraycopy()命令。

11、在做乘法和除法时使用二进制移位操作。

12、循环内不要不断创建对象的引用,在循环外声明好引用。

13、基于效率和检查的考虑,应该尽可能使用array,无法确定数组大小时才使用ArrayList。

14、在确保线程安全的情况下,尽量使用HashMap、ArrayList、StringBuilder,在线程不安全的情况下才用HashTable、Vector、StringBuffer(开销较大)。

15、不要将数组声明为public static final,这样只让引用不可变,而无法保证数组内元素不可改变。

16、尽量在合适的场合使用单例。

17、尽量避免随意使用静态变量。(static变量通常不会被gc回收这个对象所占用的堆内存)

18、及时清除不再需要的会话。(如服务器都有默认的会话超时时间为30分钟)

19、实现RandomAccess接口的集合比如ArrayList,应当使用最普通for循环而不是foreach循环来遍历。(实现RandomAccess接口用来表明其支持快速随机访问

20、使用同步代码块代替同步方法,避免对那些不需要进行同步的代码也进行了同步,影响了代码执行效率。

21、将常量声明为static final, 并以大写命名。

22、不要创建一些不使用的对象,比如一些中间临时对象,能省略就省略。

23、程序运行过程中少使用反射,虽然功能强大,但是效率不高,尤其是Method的invoke方法。

24、使用数据库连接池和线程池,两个池是重用对象,前者可以避免频繁的打开和关闭连接,后者可以避免频繁地创建和销毁线程。

25、使用带缓冲的输入输出流进行IO操作。(BufferedReader....)

26、顺序插入和随机访问较多的场景使用ArrayList,元素删除和中间插入较多的场景使用LinkedList。、

27、不要让public方法中有太多的形参,使用面向对象思想,可以传入JavaBean。

28、字符串变量和字符串常量在使用equals比较的时候将字符串常量写在前面。

29、不要对数组使用toString()方法。

30、不要对超出范围的基本数据类型做向下强制转型。

31、共用的集合类中不使用过的数据要及时remove。

32、把一个基本数据类型转为字符串:直接使用toString()方法最快、String.valueOf()次之,底层也是使用Integer.toString()方法,i+" "底层使用了StringBuilder实现,最慢。

33、使用最有效率的方式去遍历Map。

34、对资源的close建议分开操作,不在同一个try中执行,防止在一次close中抛出异常,未执行后面的close操作。

原创粉丝点击