目录
本书的主要内容
- 基于JDK7的HotSpot JVM
- 第二章、测试java应用的通用方法以及java基准测试的陷阱、可视化的性能分析
- 第三章、监控java的一些工具
- 调优的主题:JIT编译(第四章)和垃圾收集(第五、六章)
- java平台个方面的最佳实践:java堆内存的使用(第七章)、本地内存的使用(第八章)、线程性能的调优(第九章)、java企业版API(第十章)、JPA和JDBC(第十一章)、一些通用的Java SE API技巧(第十二章)
第一章主要内容
一、jvm调优的标志
除少数例外,jvm主要接受两类标志:布尔标志和附带参数的标志;
1、布尔标志语法:
-XX:+FlagName表示开启
-XX:-FlagName表示关闭
2、附带参数的语法
-XX:FlagName=something
表示将标志FlagName的值设置为something
每个标志都有它的默认值,选取的时需要考虑不同的因素:运行的jvm的物理平台以及其他传给jvm的命令行参数
在给定的命令行上添加-XX:+Printflagsfinal(默认false,即关闭)就能获得具体运行环境中特定标志的默认值。
基于环境对标志进行自动调优的过程称为自动优化
二、client和server类虚拟机
java的自动优化前提是机器被分为client和server。这两个术语直接与特定平台上默认jvm编译器相关,它们也设定了默认的调优标志。
例如机器类别决定了平台默认的垃圾收集器
windows上运行的任何32位jvm(无论CPU的个数是多少),以及任何单CPU机器(无论什么操作系统)上运行的任何32位jvm都是client机器;
所有其他机器(包括所有64位jvm)都被认为是server类;
总结:32位是client类,64位是server类;
三、全面的性能调优方法
1、编写更好的算法
2、编写更少的代码
3、避免过早优化(我们不应该把大量时间都耗费在那些小的性能改进上)
4、数据库很可能是瓶颈