读者对象
本书适合那些渴望深入了解 JVM 和 Java API 性能各个方面的性能调优工程师和开发者。
假如你想快速修复性能问题,比如网站周一早上要上线,而现在已经是周日深夜了,那么本书可能不适合你。
如果你是性能分析的新手,正要开始进行 Java 的性能分析,那么本书会对你有所帮助。我的目的主要是为新工程师提供足够多的信息和上下文,以便使他们明白如何将基本的性能调优原则运用到 Java 应用中去。然而,系统分析的范畴非常广阔,已经有大量的优秀资源(那些原则当然也适用于 Java),从这个意义上来说,希望本书也能成为它们的有益补充。
不过从根本上说,想让 Java 运行得飞快,就得深入理解 JVM(以及 Java API)的实际工作原理。有数以百计的 Java 性能调优参数,而 JVM 调优并不像瞎猫碰死耗子那样,调一下再看看是否奏效。与之相反,我的目的是提供更为详尽的 JVM 和 API 工作原理,以期在你理解它们如何工作的原理之后,能理解应用的某些行为为何糟糕。理解了这些之后,排除那些性能低下、令人不快的行为就会变成简单(至少是比以前更简单)的任务。
Java 性能调优工作还有一个有趣的方面,就是开发人员的背景和性能调优或 QA 组人员的背景常常有很大差别。我认识一些开发人员,他们可以记住成千上万个令人费解的很少使用的 Java API 方法签名,但他们对 -Xmn 的含义却没有什么概念。我也认识一些测试工程师,他们可以通过设置垃圾收集器的各种标志来榨取最后一滴性能,但他们却很少有人能用 Java 写出像样的“Hello, World”。
Java 性能调优覆盖这两个领域:编译器和垃圾收集器等的调优参数,以及 API 的最佳实践。所以,我假定你对如何编写 Java 程序有很好的理解。即便你主要的兴趣不是在 Java 编程,我仍然会花一点时间讨论编程,包括例子中包含大量数据的示例程序。
然而,如果你的主要兴趣是 JVM 自身的性能调优——意思是不用更改任何代码而改变 JVM 的行为,那么本书的大量章节都对你有用。可以随意跳过代码部分,而关注你所感兴趣的领域。也许你会顺便为 Java 应用如何影响 JVM 性能提出一些真知灼见,并向开发人员提出更改建议,以便让你的性能调优测试工作更加如鱼得水。
