《Java程序性能优化:让你的Java程序更快、更稳定》
葛一鸣 著
优化必须有明确的目标:优化的是短板。
1、磁盘IO
2、网络
3、CPU
4、数据库
5、异常:Java频繁的异常捕获处理,耗性能。
性能调优的级别:
1、设计调优:善用设计模式
2、代码调优:数据结构
3、JVM调优:JVM参数
4、数据库调优:优化查询
5、操作系统调优
注意点
- 单项增加CPU数量,并不能完美提高性能。应降低串行化比重。
- 频繁使用的对象,使用:对象池化,如线程池、数据库连接池。
- subString()用空间换时间,为了截取字符串性能,可能造成内存泄漏。
- 字符串切分性能:split < StringTokenizer < indexOf。
- StringBuffer线程同步的。
- LinkedhashMap 在HashMap的基础上维护一个链表,记录元素输入顺序。
- 静态方法,性能调用优于实例方法。
- java.util.concurrent.atomic.AtomicInteger原子类基于无锁算法实现。
优秀开源框架
Amino框架:无锁实现原子操作的集合,如List、Set等。
Kilim协程框架;协程比线程更轻量级。
Java性能工具
jconsole可检测死锁。
Visual VM支持OQL(对象查询语言)。
MAT内存泄漏检测。