没有捷径可走的Java性能优化
多年来,用Google搜索Javaperformancetuning,出现的三篇最热门文章之一是于年到年左右发表的文章,这篇文章在Google搜索引擎出现早期就被纳入其索引中。之所以一直在搜索结果中排在前列,是因为其初始排名比较高,带来了很多访问,而这些访问又反过来提升了其排名。
但是,该页面上提供的建议已经完全过时,不再成立,很多情况下甚至对应用程序有害。然而,因为该页面在搜索结果中的有利位置,很多开发人员能看到它,所以他们很有可能受到这些糟糕建议的影响。
同理,如今朋友圈广泛传播一些诸如「性能优化宝典」「大厂优化秘籍」「X大优化技巧」之类的文章,被一些刚开始接触Java性能优化的读者奉为圭臬,而实际情况是什么呢?
JVM没有神奇的开关,让你的代码变得“更快”没有让Java运行更快的“秘诀与技巧”没有对你隐藏的秘密算法如果有一本关于Java性能优化的书一开始就这样跟你兜底,你应该认真地读读,因为作者们看起来相当实在。他们继续,这不是一本代码性能技巧手册,相反,聚焦于好的性能工程所涉及的方方面面:
整个软件生命周期内的性能方法论适用于性能的测试理论度量、统计和工具分析技能(包括系统和数据)底层的技术与机制那么书中有没有直接上手的代码呢?有是有,但是,作者说了,用之前你要三思:书的后半部分会引入一些启发式的代码级优化技术,不过这些技术都附带了开发人员在使用之前应该注意的警告和权衡。
持有这种理念的三位作者都是资深Java工程师(有两位JavaChampion得主)。他们的基本认识是——性能优化是一门实验科学:JVM性能调优是技术、方法论、可测的量和工具的综合。它的目的是以系统所有者或用户所期望的方式产生可以测量的输出。
更进一步,如果考虑到人的因素,性能优化是坚实的经验主义和软性的人类心理学的奇异组合。重点在于,一方面是可观测指标的绝对数字,另一方面是最终用户和干系人如何看待这些数字。而这本书就是要聚焦如何解决这一明显的悖论。
光是看到这里,我觉得你可以考虑入手这本书了,一本好书,作者持有的基本理念就会让你欢呼雀跃。
本杰明·J.埃文斯詹姆斯·高夫克里斯·纽兰
著
曾波
译
图书特色
Java性能优化领域经典作品Amazon4.5星好评图书不仅调优,还有编码相关内容,涉及JIT编译、语言性能等本书从实验科学的角度探讨了Java性能优化的方方面面,重点阐述了最新的实用JVM性能调优策略、工具和技巧。通过本书,我们不仅可以了解Java原理和技术如何充分利用现代硬件和操作系统、衡量Java性能的陷阱以及微基准测试的弊端有哪些,还能深入研究可能使团队烦恼的几种性能测试和常见反模式、JVM垃圾收集、JIT编译和Java语言性能技术等。
译者曾波特意在本书出版之时送给读者一段话:
年8月,不经意间翻阅了一本名为OptimizingJava:PracticalTechniquesforImprovedPerformanceTuning的书,震惊于书中描述的系统性Java性能优化知识,于是迫切希望能将三位作者的理念与方法传达给国内的Javaer。现在《Java性能优化实践:JVM调优策略、工具与技巧》中文版已经上架,希望这本书能够转化为你的性能调优利器,为项目带去真正的价值。对此,我深信不疑,毕竟,性能优化是一个常谈常新的话题,而这本书可以历经时间的考验。
作译者简介:
本杰明·J.埃文斯(BenjaminJ.Evans)
初创公司jClarity联合创始人和技术Fellow,获得过JavaChampion荣誉和JavaOneRockstar奖,《Java程序员修炼之道》合著者。
詹姆斯·高夫(JamesGough)
Java开发者和技术图书作者,任职于摩根士丹利,专注构建面向客户的技术。
克里斯·纽兰(ChrisNewland)
JITWatch项目作者,JavaChampion荣誉得主,ADVFN高级开发者和团队负责人,擅长使用Java来处理实时的股市数据。
译者
曾波
互联网架构师,拥有13年互联网从业经验,曾任职于微软、什么值得买、京东金融、鹏博士电信传媒集团,曾参与多家公司的技术团队从建立到成熟的过程,主持实施了重大技术决策和技术落地,在大规模复杂系统架构和技术管理方面拥有丰富的实践经验。
业内大佬倾力推荐
那具体说来,这本书写得怎么样呢?在本书还没有出版之前,国内外Java领域的不少大佬就抢读了这本书,他们怎么看?他们在解决性能优化问题的过程中最在意哪些因素?他们是如何切入问题的?接下来,咱们来一睹他们在这个问题上的洞见。
推荐序作者CharlieNutter
红帽中间件首席软件工程师、为英文版作序的CharlieNutter,以一个特别的视角回顾了Java技术发展的历程,为我们解决如今的性能问题指明了方向:
而现在,性能问题的答案是了解你的工具。通常这意味着你不但要了解Java语言是如何工作的,还要知道JVM类库、内存、编译器、垃圾收集器和应用程序运行所在的硬件是如何交互的。在我从事JRuby项目的工作中,我学到一个有关JVM的不变的真理:所有的性能问题都没有单一的解决方案,而是多种解决方案的组合。技巧就是找到那些方案,并把最能满足要求的拼凑起来。现在你有了一个应对性能之战的秘密武器,就是你要阅读的这本书。
推荐序作者臧秀涛
与本书作译者都颇有渊源的InfoQ技术大会主编臧秀涛,既对图书理念进行了透彻分析,又点出了部分读者的学习误区,最后强调了性能工具的重要性:
我感觉本书的最大价值在于作者们所要传达的理念。在性能调优方面,没有任何灵丹妙药。任何性能决策,都要通过合理的性能测试来检验。本书不止一次提到,读者不能盲目使用书中结论,如果要在自己的项目中应用,必须亲自通过实验来检测。
本书有些章节经常让人会心一笑,比如在第4章讲到性能反模式的地方,有一条叫“按照坊间传说调优”。大家可能有过这种经验,时不时就会在朋友圈看到有人转发“优化Java的xxx条规则”,诸如“尽量重用对象”“尽量用final”之类,倒是简单好记,但细究起来,很多是十多年前的“野路子”,没有明确的适用范围,仿佛放之四海而皆准,可叹这种坊间传说还颇有市场。希望本书能够荡涤这种风气。
本书提到的很多性能工具也是读者应该重点