为什么Java开发人员应该阅读有关性能调优的书? 当我很久以前第一次面对这个问题时,我以为以后会做,但是我很长一段时间都没有回过头来。 仅当我在用Java编写的任务关键型服务器端财务应用程序中遇到严重的性能和可...
为什么Java开发人员应该阅读有关性能调优的书? 当我很久以前第一次面对这个问题时,我以为以后会做,但是我很长一段时间都没有回过头来。 仅当我在用Java编写的任务关键型服务器端财务应用程序中遇到严重的性能和可伸缩性问题时,我才意识到自己的错误,即缺乏对性能测量,调试和查找瓶颈的知识。 的确,当您真正需要它时,您将学到最多的知识,但是那些时间并不是学习基础知识的最佳时间,实际上,这些时间是应用并纠正您的误解的时间。 这就是为什么我与所有Java程序员共享这些<i class="raw_i_node">Java性能书籍</i> ,并建议他们花一些时间至少阅读一本完整的书籍。 顺便提一下,这些书除了我的<a href="https://javarevisited.blogspot.com/2013/01/top-5-java-programming-books-best-good.html">5本必须阅读的Java程序员书籍外</a> 。 记住,有关性能调优的知识是高级Java开发人员的重要方面之一,可以使您与众不同。 自从Java推出以来(大约20年前),它就因为运行缓慢和缺乏性能而受到批评。 今天,就本地语言的性能而言,我认为Java不会落后。 鉴于Java具有使用JIT(及时编译器)本地编译热代码的能力,它几乎可以与用C和C ++编写的本地应用程序相提并论,但是可以通过遵循最佳实践,避免常见的性能陷阱并使用最新工具来完成很多工作。和技术。 在本文中,我将介绍有关Java性能的五本一本不错的书,它们不仅会教您测量什么,如何测量,而且还将解释这些问题背后的基础知识和概念。 您不仅将了解运行Java应用程序的系统和JVM,还将学习如何使用Java API编写更快的代码。 因此,我们还等什么,让我们开始探索Java性能调优的好书之路。
Java Performance权威指南,作者:Scott Oaks
<a href="//www.javacodegeeks.com/wp-content/uploads/2014/07/Java_performance_the_definite_guide_Stock.jpg" style="display:block;text-align:center;"> </a> 一言以蔽之,这是当前有关Java性能优化的<i class="raw_i_node">最佳书籍</i> 。 造成这种情况的原因有很多,其中之一是,这是一本最新的书,涵盖了Java 7更新40。为了学习性能调整,您应该了解工具,过程,选项,最重要的是避免<a href="https://javarevisited.blogspot.sg/2012/01/improve-performance-java-database.html">常见的性能陷阱</a> 。 本书在这一点上得分很高,它的章节介绍了Java性能工程师应该意识到的所有工具,包括Java 7u40中添加的工具,例如Flight Recorder和Java Mission Control。 它也很好地解释了各种垃圾收集算法,例如并发标记扫描(CMS)和G1垃圾收集器。 您将学习它们在不同条件下如何工作,如何监视它们以及如何对其进行调整。 它还包括一整章有关堆分析和优化的内容。 这将教您一些常见的知识,例如如何使用Java进行堆转储和直方图,然后介绍许多减少<a href="https://javarevisited.blogspot.com/2011/05/java-heap-space-memory-size-jvm.html">堆内存占用的方法</a> 。 它还有一章关于JDBC和JPA性能。 关键点在于,它告诉您如何选择适当的JDBC / JPA方法可能远远超过了SQL查询调整带来的收益。 同样,它有一章完整的章节,介绍了有关多线程问题,陷阱和对性能的影响。 它包括高级主题,例如ForkJoinPool和Java 8 Streams。 它还基于同步和错误共享,调整JVM线程(例如线程堆栈大小),配置有偏锁,线程优先级和线程旋转的成本。 顺便说一下,到目前为止还没有介绍最好的内容,本书最喜欢的II是第12章。本章介绍了一些经典的Java核心调优技巧及其影响。 这包括缓冲的I / O,类加载,随机数生成,JNI,异常,字符串性能,日志记录,Java Collections API,Java 8 lambda与匿名类,最后是<a href="https://javarevisited.blogspot.sg/2014/03/2-examples-of-streams-with-Java8-collections.html">Java 8流</a>和多个过滤器性能。 这实际上是我阅读的第一章,我爱上了它的内容和风格。 如果您想自己快速评估本书,建议您从本章开始。 它还基于Java EE性能,解释了XML和JSON解析以及对象序列化的可能问题。
Java Performance by Binu John,查理·亨特(Charlie Hunt)
<a href="//www.javacodegeeks.com/wp-content/uploads/2014/07/Java-Performance.jpg" style="display:block;text-align:center;"> </a> 长期以来,这是我最喜欢的Java性能书,直到最近阅读Scott Oaks撰写的Java Performance The Definitive Guide。 这本书非常相似,就像从顶部取代它的那本书一样。 它的章节解释了如何进行性能测量,并解释了<a href="https://javarevisited.blogspot.sg/2013/06/find-cpu-and-memory-used-by-java-solaris-prstat-command-example.html">测量CPU,内存和IO</a>所需的工具。 有关解释垃圾收集工作原理的章节,不同的GC算法(例如串行垃圾收集器与并行垃圾收集器,并发标记扫描收集器等)。Binu John和Charlie Hunt在构建实验方面做得非常出色,这些实验可以识别优化机会,解释结果并采取行动有效的行动。 为了给您一些信誉并暗示您在本书中可以期望得到的结果,Charlie Hunt是Oracle的JVM性能首席工程师。 他负责改善<a href="https://javarevisited.blogspot.sg/2011/11/hotspot-jvm-options-java-examples.html">HotSpot JVM</a>和Java SE类库的性能。 他还参与了改善Oracle GlassFish和Oracle WebLogic Server的性能的工作,Binu John是Ning,Inc.的高级性能工程师,他致力于改善Ning平台的性能和可伸缩性,以支持数百万的页面浏览量。每月。 在此之前,他在Sun Microsystems工作了十多年,从事与Java有关的性能问题,并在Sun的Enterprise Java Performance团队中任职。 如果您还没有阅读过有关Java性能调优的书,并且想为解决性能问题打下良好的基础,那么这本书是您可以购买的书。 每花一分钱都是值得的。
系统性能:企业与云作者:Brendan Gregg
<a href="//www.javacodegeeks.com/wp-content/uploads/2014/07/System-Performance-Enterprise-and-the-Cloud.png" style="display:block;text-align:center;"> </a> 系统性能分析是所有计算机用户的一项重要技能,无论您是要了解笔记本电脑运行缓慢的原因,还是要优化大规模生产环境的性能。 它是对操作系统(内核)和应用程序性能的研究,这本书将告诉您所有您需要了解的有关Linux性能监视和调整的知识。 程序员从优化算法,数据结构,JVM, <a href="https://javarevisited.blogspot.com/2011/04/garbage-collection-in-java.html">垃圾收集器开始,</a>但是最终它们达到了系统性能发挥作用的地步。 您可能想知道为什么磁盘操作在开发设备上如此之快,却成为生产设备上的主要问题,CPU缓存如何对您的应用程序产生如此大的影响,如何利用L1,L2和L3缓存以及物理内存在您的机器上可用。 我认为,这是每位程序员的书,不仅是Java程序员的书。 对于任何真正对性能调整感兴趣的开发人员而言,了解系统的工作方式,分页,交换和虚拟内存的工作方式,CPU如何从磁盘获取数据,不同类型的磁盘如何对受IO绑定的Java应用程序产生深远影响都是非常重要的。 我经常说<a href="https://java67.blogspot.sg/2013/02/difference-between-jit-and-jvm-in-java.html">学习JVM,</a>但是现在我可以说您必须非常了解您的系统。 知道操作系统的基本知识,系统调用,内存,CPU,网络和磁盘IO肯定会走很长一段路,并且可以帮助您以任何编程语言(包括Java)编写高性能应用程序。
Jack Shirazi编写的Java性能调优
<a href="//www.javacodegeeks.com/wp-content/uploads/2014/07/Java-Performance-Tuning.gif" style="display:block;text-align:center;"> </a> 这是一本有关Java性能调整和编写在Java中执行速度更快的代码的主要书籍之一。 杰克第一次写这本书时,几乎没有可用的东西。 甚至本书的第二版都已经有11年的历史了,大约在2003年发行。为什么我会推荐11年前写的东西呢? 因为它包含一些建议,实践和技术,这些建议,实践和技术即使在今天也是永恒且值得了解的。 尽管您不能按照本书的原始精神来学习本书,但应始终牢记,本书中提到的大多数内容已在后续的Java版本中得到解决。 最好的建议是在第一章中,这本书告诉我Java应用程序的性能将受CPU,内存和IO(磁盘和网络)这三个主要因素的限制,令人惊讶的是,许多知道如何使用事件探查器的开发人员不知道这个基本事实。 我读过的经典建议“不要调整您不需要调整的内容”是最好的性能建议。 您可以看一下本书中给出的性能检查表,以了解什么是重要的,什么不是什么。 尽管这本书还介绍了许多性能分析工具,但是我建议使用诸如Scott Performances撰写的Java Performance The Definitive Guide和Binu John撰写的Java Performance这样的最新书籍,Charlie Hunt拥有更多最新列表。 您应该记住,本书不仅仅涵盖JDK 1.4.0。 但是您应该查看第4至12章,其中涵盖了可应用于Java代码的各种性能提示和技术。 Jack还拥有一个站点<a href="http://www.javaperformancetuning.com/">http://www.javaperformancetuning.com/</a> ,该站点对于学习Java开发人员的性能调优非常有用。
Java性能和可伸缩性:Henry H. Liu的定量方法
<a href="//www.javacodegeeks.com/wp-content/uploads/2014/07/Java-Performance-Scalability-Quantitative-approach.jpg" style="display:block;text-align:center;"> </a> 在介绍这本书之前,让我介绍作者,他是PHD,在Vmware工作,专门研究高性能和可伸缩的企业Java应用程序,但是我认为他以“软件性能和可伸缩性:定量方法”而著称。 。 您可以在这本书中看到他早期畅销书的更专业版本。 顾名思义,这本书专注于Java应用程序的性能和可伸缩性。 这本书对Java开发人员,架构师甚至管理人员都有好处。 它分为两个主要部分,第一部分介绍Java性能和可伸缩性的基础知识,第二部分介绍提高性能和可伸缩性的实践。 基础部分包含四章,每章分别探讨软件程序,计算机硬件和Java虚拟机的可伸缩性。 第二部分包含各章,探讨<a href="https://javarevisited.blogspot.sg/2012/06/what-is-xxusecompressedoops-in-64-bit.html">从32位到64位如何影响</a> Java应用程序的<a href="https://javarevisited.blogspot.sg/2012/06/what-is-xxusecompressedoops-in-64-bit.html">性能</a>和可伸缩性。 第6章可能是最重要的一章,它解释了如何调整Java以获得最佳的性能和可伸缩性。 它介绍了方法,实践,工具和调整Java应用程序时要牢记可伸缩性。 第7章是另一个重要的章节,解释了设计,算法和实现如何影响任何Java应用程序的性能和可伸缩性。 它还介绍了如何执行瓶颈分析。 好在他用示例程序解释了所有这些,因此您可以在阅读时遵循准则。 总体而言,对于Java性能工程师而言,这是一本非常独特的好书,如果您喜欢阅读多本书籍以获取洞见,那么您可以将其与<i class="raw_i_node">Java Performance The Definitive Guide</i> and <i class="raw_i_node">System Performance:Enterprise and Cloud一起阅读</i> 。
经验丰富的Java开发人员
<a href="//www.javacodegeeks.com/wp-content/uploads/2014/07/The-Well-Grounded-Java-Developer.jpg" style="display:block;text-align:center;"> </a> 这是给读者的好书,我不会说这本书只关注Java性能调优,但我会说这是每个现代Java开发人员都应该拥有的书。 Ben Evans和Martjin Verburg不需要任何介绍。 他们是著名的Java专家和<a href="http://www.jclarity.com/">jClarity的</a>创始人, <a href="http://www.jclarity.com/">jClarity</a>有望解决云环境中的性能问题。 他们在Java方面拥有多年的经验,这在他们的书籍《成熟的Java开发人员:Java 7的重要技术和多语言编程》中得到了反映。 我在2012年首次接触这本书,在阅读了示例章节之后,我被说服了买这本书。 这是现代Java开发人员必读的书。 它说明<a href="//www.javacodegeeks.com/2014/04/10-jdk-7-features-to-revisit-before-you-welcome-java-8.html">了Java上的新更改,包括JDK 7中的更改,</a>例如try-with-resources,NIO2.0和并发更改。 但最重要的是,它解释了为什么向JVM添加新功能如此昂贵。 添加新的库扩展(如fork / join或语法糖,如switch-on-string)相对容易,但是添加JVM指令(如invokedynamic)则非常昂贵。 关于这本书的最好的事情可能是它不仅会停留在Java上,而且会进一步介绍现代JVM语言,例如Scala,Clojure和Groovy。 它使用新的JVM语言和现代方法来接触函数式编程,以测试,构建和有争议的Java应用程序集成。
这就是所有<b class="raw_b_node">优秀的Java性能调优书籍的清单</b> 。 我已经多次推荐“有效Java”,并且作为一本面向Java开发人员的书,但同时我也发现您应该有一本专门针对Java性能调优的书。 经过几年的Java工作和经验,您将不可避免地面临性能挑战,这时您应该至少了解发现瓶颈和提高Java应用程序性能的基本知识,工具和过程。 因此,如果您还没有阅读过Java性能手册,那么现在该读一本了。
翻译自: <a href="https://www.javacodegeeks.com/2014/07/top-5-java-performance-tuning-books-best-of-lot-must-read.html">https://www.javacodegeeks.com/2014/07/top-5-java-performance-tuning-books-best-of-lot-must-read.html</a>
本站为非盈利网站,如果您喜欢这篇文章,欢迎支持我们继续运营!
本站主要用于日常笔记的记录和生活日志。本站不保证所有内容信息可靠!(大多数文章属于搬运!)如有版权问题,请联系我立即删除:“abcdsjx@126.com”。
QQ: 1164453243
邮箱: abcdsjx@126.com