Java 性能优化的 55 个细节
-
1. 尽量在合适的场合使用单例
-
2. 尽量避免随意使用静态变量
-
3. 尽量避免过多过常的创建Java对象
-
4. 尽量使用final修饰符
-
5. 尽量使用局部变量
-
6. 尽量处理好包装类型和基本类型两者的使用场所
-
7. 慎用synchronized,尽量减小synchronize的方法
-
9. 尽量不要使用finalize方法
-
10. 尽量使用基本数据类型代替对象
-
11. 多线程在未发生线程安全前提下应尽量使用HashMap、ArrayList
-
12. 尽量合理的创建HashMap
-
13. 尽量减少对变量的重复计算
-
14. 尽量避免不必要的创建
-
15. 尽量在finally块中释放资源
-
16. 尽量使用移位来代替'a/b'的操作
-
17.尽量使用移位来代替'a\*b'的操作
-
18. 尽量确定StringBuffer的容量
-
19. 尽量早释放无用对象的引用
-
20. 尽量避免使用二维数组
-
21. 尽量避免使用split
-
22. ArrayList & LinkedList
-
23. 尽量使用System.arraycopy ()代替通过来循环复制数组
-
24. 尽量缓存经常使用的对象
-
25. 尽量避免非常大的内存分配
-
26. 慎用异常
-
27. 尽量重用对象
-
28. 不要重复初始化变量
-
29. 在java+Oracle的应用系统开发中,java中内嵌的SQL语言应尽量使用大写形式,以减少Oracle解析器的解析负担。
-
30. 在java编程过程中,进行数据库连接,I/O流操作,在使用完毕后,及时关闭以释放资源。因为对这些大对象的操作会造成系统大的开销。
-
31. 过分的创建对象会消耗系统的大量内存,严重时,会导致内存泄漏,因此,保证过期的对象的及时回收具有重要意义。JVM的GC并非十分智能,因此建议在对象使用完毕后,手动设置成null。
-
32. 在使用同步机制时,应尽量使用方法同步代替代码块同步**。**
-
33. 不要在循环中使用Try/Catch语句,应把Try/Catch放在循环最外层
-
34. 通过StringBuffer的构造函数来设定他的初始化容量,可以明显提升性能
-
35. 合理使用java.util.Vector
-
38. 不用new关键字创建对象的实例
-
39. 不要将数组声明为:public static final
-
40. HaspMap的遍历:
-
41. array(数组)和ArrayList的使用
-
42. 单线程应尽量使用 HashMap, ArrayList,除非必要,否则不推荐使用HashTable,Vector,她们使用了同步机制,而降低了性能。
-
43. StringBuffer,StringBuilder的区别在于:java.lang.StringBuffer 线程安全的可变字符序列。一个类似于String的字符串缓冲区,但不能修改。StringBuilder与该类相比,通常应该优先使用StringBuilder类,因为她支持所有相同的操作,但由于她不执行同步,所以速度更快。为了获得更好的性能,在构造StringBuffer或StringBuilder时应尽量指定她的容量。当然如果不超过16个字符时就不用了。相同情况下,使用StringBuilder比使用StringBuffer仅能获得10%~15%的性能提升,但却要冒多线程不安全的风险。综合考虑还是建议使用StringBuffer。
-
44. 尽量使用基本数据类型代替对象。
-
45. 使用具体类比使用接口效率高,但结构弹性降低了,但现代IDE都可以解决这个问题。
-
46. 考虑使用静态方法,如果你没有必要去访问对象的外部,那么就使你的方法成为静态方法。她会被更快地调用,因为她不需要一个虚拟函数导向表。这同事也是一个很好的实践,因为她告诉你如何区分方法的性质,调用这个方法不会改变对象的状态。
-
47. 应尽可能避免使用内在的GET,SET方法。
-
48.避免枚举,浮点数的使用。
-
49、避免在循环条件中使用复杂表达式
-
50、为'Vectors' 和 'Hashtables'定义初始大小
-
51、在finally块中关闭Stream
-
52、使用'System.arraycopy ()'代替通过来循环复制数组,例子:
-
53、让访问实例内变量的getter/setter方法变成”final”
-
54、对于常量字符串,用'String' 代替 'StringBuffer'
-
55、在字符串相加的时候,使用 ' ' 代替 " ",如果该字符串只有一个字符的话
转自 CSDN 魏来码农 https://blog.csdn.net/qfguan/article/details/121036716?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.615389&depth_1-utm_source=distribute.pc_relevant_t0.615389

浙公网安备 33010602011771号