"Java开发经验(性能优化).doc"
这篇文档是北研架构办技术组(幺得志)编写的关于Java开发中的性能优化指南,主要涵盖了J2SE和J2EE Web应用的性能提升策略。文档包含了版本信息、变更记录以及详细的性能优化建议。
在J2SE性能编程建议中,作者提出了多个关键点:
1. 避免不必要的对象创建和垃圾回收(GC)。频繁的对象创建会增加GC的压力,导致性能下降。
2. 使用基本变量类型而非包装类,因为基本类型没有对象创建的开销。
3. 缓存频繁使用的数据,减少计算或查询的次数。
4. 使用`StringBuffer`进行字符串拼接,相较于`+`操作符更高效。
5. 控制`System.out.println()`的使用,因为它在多线程环境下的性能较差。
6. 应用数据库连接池以复用数据库连接,减少每次连接创建和释放的成本。
7. 利用线程池管理并发任务,避免频繁创建和销毁线程。
8. 不要在循环内部分配对象,这会增加GC负担。
9. 尽早释放不再使用的对象引用,帮助GC工作。
10. 使用Java Native Interface(JNI)需谨慎,因为涉及到本地方法调用,可能影响性能。
11. 避免使用复杂的数据结构,如链表等,它们的查找和操作效率通常较低。
12. 避免使用`Vector`,因其线程安全但性能低,推荐使用`ArrayList`。
13. 避免大内存分配,大对象可能导致更频繁的GC。
14. 异常处理代价高昂,应尽量避免异常发生。
15. 减少类型转换(casts)和`instanceof`的使用,它们都会带来额外开销。
16. 利用缓冲区进行I/O操作,如`BufferedReader`和`BufferedWriter`,提高读写效率。
17. 使用回调机制以避免远程方法调用(RMI)带来的阻塞。
18. 控制整数运算,如使用`int`而非`BigInteger`,减少计算成本。
19. 不要手动调用GC,让JVM自行管理。
20. 尽量避免远程方法调用,因为网络延迟和序列化/反序列化都会降低性能。
在J2EE Web编程建议方面,文档提到了:
1. 利用`HttpServlet`的`init()`方法缓存数据,减少请求处理时的计算。
2. 关闭Servlet和JSP的自动重载,以提高应用服务器的稳定性。
3. 精心管理`HttpSession`,避免过多session导致内存占用过高。
4. 使用gzip压缩HTTP响应,减少网络传输的数据量。
5. 避免使用`Servlet`的`SingleThreadModel`模式,因为它限制了并发处理能力。
6. 设置合适的Web容器线程池大小,确保并行处理能力与系统负载匹配。
7. 选择正确的包含机制,例如`jsp:include`和`<jsp:forward>`,以优化处理流程。
8. 正确使用用户Bean,减少不必要的数据传输和计算。
这些性能优化建议旨在帮助开发者提高Java应用程序的运行效率,尤其对于大型BS系统如网银和电银,性能优化是提升用户体验和系统稳定性的关键。通过遵循这些最佳实践,开发者可以构建更加健壮、高效的Java应用程序。