Java性能优化的小细节

性能优化实现方式(单纯考虑代码层面):

1.减小代码体积

2.提高运行效率

如何做:

1.尽量指定类.方法的final修饰符

带有final修饰的类是不可派生的,该类所有的方法都是final的,java编译器会寻找机会内联所有的final方法,有助于提高运行效率.

2.尽量复用对象

对象的创建和维护都会花费java虚拟机的精力,特别是String对象的使用,出现的字符串连接要使用StringBuilder/StringBuffer来替代+号,因此,生成过多的对象将会给虚拟机带来不必要的负担;

3.及时关闭流

使用I/O流对数据进行操作是会对系统造成非常大的负担,用完要及时close;

4.不要在循环语句中进行复杂的处理,以及一些异常处理,应该把这些提取到循环外层

例如try...catch...应该放在外层

5.循环内不要进行对象的频繁创建,除非不得已的情况下;

6.尽量使用HashMap、ArrayList、StringBuilder,除非对线程安全有需求,不推荐使用HashTable、Vector、StringBuffer后三者因为做了同步机制对性能有较高的要求;

7.清除不需要的会话;

8.将常量声明为static final,并且用大写来命名

9.不创建一些不使用的对象,不导入一些不使用的包

10.程序运行过程中避免使用反射,可以考虑在项目启动的时候通过反射创建对象并且加载到内存中

发射是java非常强大的一个功能,但是功能强大的同时也意味着效率不高,尤其是Method的invoke方法

11.使用数据库连接池和线程池

这样前者可以避免频繁的打开和关闭流,后者可以避免频繁的创建和销毁线程;

12.使用带缓冲的流进行I/O操作

13.public修饰的方法中形参最对不要超过3个

形参过多会导致方法的容错率降低,如果有很多方法可以用实体类包装传递;

14.在使用equals的时候把常量放在前面

这样可以避免空指针异常

15.不要对数组使用toString()方法

因为对数组使用只会打印出一串对象地址,而且有可能因为数据引用is为空而导致空指针异常,不过可以对集合使用toString()方法,因为集合的父类AbstractCollections重写了toString()方法;

16.不要对超出数据范围的基本数据类型做向下的强制类型转换,会导致精度损失

17.对基本数据类型转换为字符串最快的方式是toString(),其次是String.valueOf(数据),再次是+"" 最慢

18.对资源的关闭建议分开操作

例如 

try{

stream.close();

fileInPutStream.close();

}catch(Exception e){

.....

}

建议修改为

try{stream.close}catch(Exception e){....} 

try{fileInPutStream.close()}catch(Exception e){....}

第一种写法,假如stream流出了问题,抛了异常,那么fileInPutStream就无法关闭,这样代码一多,就有可能引起资源句柄泄露.

第二种写法虽然麻烦但是无论如何都会关闭,更加安全,当然也可以使用finall来关闭.

原文地址:https://www.cnblogs.com/bin-zhao/p/11641992.html