为什么Java开发人员应该阅读有关性能调优的书? 当我很久以前第一次面对这个问题时,我以为以后会做,但是我很长一段时间都没有回过头来。 仅当我在用Java编写的任务关键型服务器端财务应用程序中遇到严重的性能和可伸缩性问题时,我才意识到自己的错误,即缺乏对性能测量,调试和查找瓶颈的知识。 的确,当您真正需要它时,您将学到最多的知识,但是那些时间并不是学习基础知识的最佳时间,实际上,这些时间是应用并纠正您的误解的时间。 这就是为什么我与所有Java程序员共享这些Java性能书籍 ,并建议他们花一些时间至少阅读一本完整的书籍。 顺便提一下,这些书除了我的5本必须阅读的Java程序员书籍外 。 记住,有关性能调优的知识是高级Java开发人员的重要方面之一,可以使您与众不同。 自从Java推出以来(大约20年前),它就因为运行缓慢和缺乏性能而受到批评。 今天,就本地语言的性能而言,我认为Java不会落后。 鉴于Java具有使用JIT(及时编译器)本地编译热代码的能力,它几乎可以与用C和C ++编写的本地应用程序相提并论,但是可以通过遵循最佳实践,避免常见的性能陷阱并使用最新工具来完成很多工作。和技术。 在本文中,我将介绍有关Java性能的五本一本不错的书,它们不仅会教您测量什么,如何测量,而且还将解释这些问题背后的基础知识和概念。 您不仅将了解运行Java应用程序的系统和JVM,还将学习如何使用Java API编写更快的代码。 因此,我们还等什么,让我们开始探索Java性能调优的好书之路。

  1. Java Performance权威指南,作者:Scott Oaks

    一言以蔽之,这是当前有关Java性能优化的最佳书籍 。 造成这种情况的原因有很多,其中之一是,这是一本最新的书,涵盖了Java 7更新40。为了学习性能调整,您应该了解工具,过程,选项,最重要的是避免常见的性能陷阱 。 本书在这一点上得分很高,它的章节介绍了Java性能工程师应该意识到的所有工具,包括Java 7u40中添加的工具,例如Flight Recorder和Java Mission Control。 它也很好地解释了各种垃圾收集算法,例如并发标记扫描(CMS)和G1垃圾收集器。 您将学习它们在不同条件下如何工作,如何监视它们以及如何对其进行调整。 它还包括一整章有关堆分析和优化的内容。 这将教您一些常见的知识,例如如何使用Java进行堆转储和直方图,然后介绍许多减少堆内存占用的方法 。 它还有一章关于JDBC和JPA性能。 关键点在于,它告诉您如何选择适当的JDBC / JPA方法可能远远超过了SQL查询调整带来的收益。 同样,它有一章完整的章节,介绍了有关多线程问题,陷阱和对性能的影响。 它包括高级主题,例如ForkJoinPool和Java 8 Streams。 它还基于同步和错误共享,调整JVM线程(例如线程堆栈大小),配置有偏锁,线程优先级和线程旋转的成本。 顺便说一下,到目前为止还没有介绍最好的内容,本书最喜欢的II是第12章。本章介绍了一些经典的Java核心调优技巧及其影响。 这包括缓冲的I / O,类加载,随机数生成,JNI,异常,字符串性能,日志记录,Java Collections API,Java 8 lambda与匿名类,最后是Java 8流和多个过滤器性能。 这实际上是我阅读的第一章,我爱上了它的内容和风格。 如果您想自己快速评估本书,建议您从本章开始。 它还基于Java EE性能,解释了XML和JSON解析以及对象序列化的可能问题。

  2. Java Performance by Binu John,查理·亨特(Charlie Hunt)

    长期以来,这是我最喜欢的Java性能书,直到最近阅读Scott Oaks撰写的Java Performance The Definitive Guide。 这本书非常相似,就像从顶部取代它的那本书一样。 它的章节解释了如何进行性能测量,并解释了测量CPU,内存和IO所需的工具。 有关解释垃圾收集工作原理的章节,不同的GC算法(例如串行垃圾收集器与并行垃圾收集器,并发标记扫描收集器等)。Binu John和Charlie Hunt在构建实验方面做得非常出色,这些实验可以识别优化机会,解释结果并采取行动有效的行动。 为了给您一些信誉并暗示您在本书中可以期望得到的结果,Charlie Hunt是Oracle的JVM性能首席工程师。 他负责改善HotSpot JVM和Java SE类库的性能。 他还参与了改善Oracle GlassFish和Oracle WebLogic Server的性能的工作,Binu John是Ning,Inc.的高级性能工程师,他致力于改善Ning平台的性能和可伸缩性,以支持数百万的页面浏览量。每月。 在此之前,他在Sun Microsystems工作了十多年,从事与Java有关的性能问题,并在Sun的Enterprise Java Performance团队中任职。 如果您还没有阅读过有关Java性能调优的书,并且想为解决性能问题打下良好的基础,那么这本书是您可以购买的书。 每花一分钱都是值得的。

  3. 系统性能:企业与云作者:Brendan Gregg

    系统性能分析是所有计算机用户的一项重要技能,无论您是要了解笔记本电脑运行缓慢的原因,还是要优化大规模生产环境的性能。 它是对操作系统(内核)和应用程序性能的研究,这本书将告诉您所有您需要了解的有关Linux性能监视和调整的知识。 程序员从优化算法,数据结构,JVM, 垃圾收集器开始,但是最终它们达到了系统性能发挥作用的地步。 您可能想知道为什么磁盘操作在开发设备上如此之快,却成为生产设备上的主要问题,CPU缓存如何对您的应用程序产生如此大的影响,如何利用L1,L2和L3缓存以及物理内存在您的机器上可用。 我认为,这是每位程序员的书,不仅是Java程序员的书。 对于任何真正对性能调整感兴趣的开发人员而言,了解系统的工作方式,分页,交换和虚拟内存的工作方式,CPU如何从磁盘获取数据,不同类型的磁盘如何对受IO绑定的Java应用程序产生深远影响都是非常重要的。 我经常说学习JVM,但是现在我可以说您必须非常了解您的系统。 知道操作系统的基本知识,系统调用,内存,CPU,网络和磁盘IO肯定会走很长一段路,并且可以帮助您以任何编程语言(包括Java)编写高性能应用程序。

  4. Jack Shirazi编写的Java性能调优

    这是一本有关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还拥有一个站点http://www.javaperformancetuning.com/ ,该站点对于学习Java开发人员的性能调优非常有用。

  5. Java性能和可伸缩性:Henry H. Liu的定量方法

    在介绍这本书之前,让我介绍作者,他是PHD,在Vmware工作,专门研究高性能和可伸缩的企业Java应用程序,但是我认为他以“软件性能和可伸缩性:定量方法”而著称。 。 您可以在这本书中看到他早期畅销书的更专业版本。 顾名思义,这本书专注于Java应用程序的性能和可伸缩性。 这本书对Java开发人员,架构师甚至管理人员都有好处。 它分为两个主要部分,第一部分介绍Java性能和可伸缩性的基础知识,第二部分介绍提高性能和可伸缩性的实践。 基础部分包含四章,每章分别探讨软件程序,计算机硬件和Java虚拟机的可伸缩性。 第二部分包含各章,探讨从32位到64位如何影响 Java应用程序的性能和可伸缩性。 第6章可能是最重要的一章,它解释了如何调整Java以获得最佳的性能和可伸缩性。 它介绍了方法,实践,工具和调整Java应用程序时要牢记可伸缩性。 第7章是另一个重要的章节,解释了设计,算法和实现如何影响任何Java应用程序的性能和可伸缩性。 它还介绍了如何执行瓶颈分析。 好在他用示例程序解释了所有这些,因此您可以在阅读时遵循准则。 总体而言,对于Java性能工程师而言,这是一本非常独特的好书,如果您喜欢阅读多本书籍以获取洞见,那么您可以将其与Java Performance The Definitive Guide and System Performance:Enterprise and Cloud一起阅读

  6. 经验丰富的Java开发人员

    这是给读者的好书,我不会说这本书只关注Java性能调优,但我会说这是每个现代Java开发人员都应该拥有的书。 Ben Evans和Martjin Verburg不需要任何介绍。 他们是著名的Java专家和jClarity的创始人, jClarity有望解决云环境中的性能问题。 他们在Java方面拥有多年的经验,这在他们的书籍《成熟的Java开发人员:Java 7的重要技术和多语言编程》中得到了反映。 我在2012年首次接触这本书,在阅读了示例章节之后,我被说服了买这本书。 这是现代Java开发人员必读的书。 它说明了Java上的新更改,包括JDK 7中的更改,例如try-with-resources,NIO2.0和并发更改。 但最重要的是,它解释了为什么向JVM添加新功能如此昂贵。 添加新的库扩展(如fork / join或语法糖,如switch-on-string)相对容易,但是添加JVM指令(如invokedynamic)则非常昂贵。 关于这本书的最好的事情可能是它不仅会停留在Java上,而且会进一步介绍现代JVM语言,例如Scala,Clojure和Groovy。 它使用新的JVM语言和现代方法来接触函数式编程,以测试,构建和有争议的Java应用程序集成。

这就是所有优秀的Java性能调优书籍的清单 。 我已经多次推荐“有效Java”,并且作为一本面向Java开发人员的书,但同时我也发现您应该有一本专门针对Java性能调优的书。 经过几年的Java工作和经验,您将不可避免地面临性能挑战,这时您应该至少了解发现瓶颈和提高Java应用程序性能的基本知识,工具和过程。 因此,如果您还没有阅读过Java性能手册,那么现在该读一本了。

翻译自: https://www.javacodegeeks.com/2014/07/top-5-java-performance-tuning-books-best-of-lot-must-read.html

最佳5本Java性能调优书籍–精选,必读相关推荐

  1. java必读书籍_最佳5本Java性能调优书籍–精选,必读

    java必读书籍 为什么Java开发人员应该阅读有关性能调优的书? 当我很久以前第一次面对这个问题时,我以为以后会做,但是我很长一段时间都没有回过头来. 仅当我在用Java编写的任务关键型服务器端财务 ...

  2. 书籍:推荐两本java性能调优

    第一本:Java性能优化权威指南 Java性能优化圣经!Java之父重磅推荐! 本书由曾任职于Oracle/Sun的性能优化专家编写,系统而详细地讲解了性能优化的各个方面,帮助你学习Java虚拟机的基 ...

  3. 11 个简练的 Java 性能调优技巧

    转载自 11 个简练的 Java 性能调优技巧 想要让你的项目一直高性能运作吗?以下有一些技巧你可以拿去消除缓存瓶颈,还有一些其他的性能调优建议. 大多数开发者认为性能优化是一个复杂的话题,它需要大量 ...

  4. Java性能调优:充分利用垃圾收集器

    JVM背后发生了什么,垃圾回收如何影响Java性能? 性能调优世界是一个危险的地方,一个JVM标志失衡,事情很快就会变得繁琐. 因此 ,我们决定求助于Java性能调优专家, 单调 JVM探查器mjpr ...

  5. 对着Java性能调优,艿艿也很无奈···

    Java性能调优都是老生常谈的问题,特别当"糙快猛"的开发模式大行其道时,随着系统访问量的增加.代码的臃肿,各种性能问题便会层出不穷. 比如,下面这些典型的性能问题,你肯定或多或少 ...

  6. 为什么对 Java 性能调优最后都像在调 you?

    不知道你有没有发现,优化Java,或者任何其他语言的代码性能经常被当做是一种暗黑艺术. 性能分析有种神秘感.画面类似是这样的:一个「黑客」经过多年练就的手艺,能够快速深入了解某个系统,并提出神奇的解决 ...

  7. java 性能调优_Java性能调优调查结果(第四部分)

    java 性能调优 这是本系列中的最后一篇文章,我们将分析我们在2014年10月进行的Java Performance Tuning Survey的结果.如果您尚未阅读第一篇文章,建议您首先阅读以下内 ...

  8. java 性能调优_Java性能调优调查结果(第三部分)

    java 性能调优 这是本系列文章的第三篇,我们将分析2014年10月进行的调查的结果.如果您尚未这样做,我建议从本系列的前两篇文章开始: 问题严重性分析和监视域分析 . 这篇文章着重于故障排除/根本 ...

  9. java 性能调优_Java性能调优调查结果(第二部分)

    java 性能调优 这是系列文章的第二篇,我们将分析2014年10月进行的性能调整调查的结果.如果您尚未阅读第一部分,我们建议从此处开始 . 第二部分将重点监视Java应用程序的性能问题. 特别是,我 ...

最新文章

  1. 关于C#中使用SQLDMO来获取数据库中的一些操作
  2. IBASE structure
  3. linux安装库文件下载,Linux下的Curses库的下载与安装
  4. Vue自定义指令-实时时间转换指令 v-time开发
  5. 有危害吗_涂料漆对身体有害吗?涂料漆危害怎么预防
  6. 只想在老家找份工作很难吗_当您只想完成工作时,为什么公开工作会很困难
  7. 鲲鹏性能优化十板斧(四)——磁盘IO子系统性能调优
  8. Java Web学习笔记02:在Intellij里创建Web项目
  9. python selenium使用JS新建标签(new tab)与切换标签
  10. LeetCode刷题系列(三)排序
  11. 【Auto.JS】入门宝典—Auto.JS开发使用笔记(随笔和使用心得)
  12. windows C++ 解决Office打开文件提示“您尝试打开的文件xxx.xls的格式与文件扩展名指定的格式不一致”
  13. openssl rand
  14. sql 大于 小于 大于等于 小于等于 符号
  15. 26.(cesium之家)cesium军事标绘-攻击箭头编辑修改(燕尾)
  16. python图像缺陷检测_python OpenCV 实现缺陷检测
  17. CSS把图片设置为背景
  18. 怎么修改我的世界服务器封面,《我的世界:初识服务器》
  19. 老毛桃U盘快速安装ghost win7系统图文教程
  20. 自然语言处理——金庸小说的信息熵计算

热门文章

  1. ./NISwGSP: error while loading shared libraries: libopencv_stitching.so.3.0: cannot open shared obje
  2. idea报错 电脑死机蓝屏
  3. 虚拟机安装CentOS-7-x86_64-DVD-1708说明
  4. 在IDEA中将SpringBoot项目打包成jar包的方法 不要用 在上面有可以用的
  5. python中的数组按顺序切片_python切片(获取一个子列表(数组))详解
  6. shiro-权限概述
  7. python tkinter计算器实例_python -Tkinter 实现一个小计算器功能
  8. jstat分析_jstat –分析
  9. spring boot注释_Spring Boot中的@SpringBootConfiguration注释
  10. dynamodb java_使用Java扫描DynamoDB项目