网站首页 > 技术文章 正文
为什么Java开发人员应该阅读有关性能调优的书?
当我很久以前第一次面对这个问题时,我以为以后会做,但是我很长一段时间都没有回过头来。 仅当我在用Java编写的任务关键型服务器端财务应用程序中遇到严重的性能和可伸缩性问题时,我才意识到自己缺乏对性能测量,调试和查找瓶颈的知识,这是我的错误。
的确,当您真正需要它时,您将学习最多,但是那些时间并不是学习基础知识的最佳时间,实际上,这些时间是应用并纠正您的误解的时间。 这就是为什么我与所有Java程序员共享这些Java性能书籍 ,并建议他们花一些时间至少阅读一本完整的书籍。
请记住,有关性能调优的知识是高级Java开发人员的重要方面之一,可以使您与众不同。 自将Java引入20年前以来,它就一直因其速度慢和性能不足而受到批评。 今天,就本地语言的性能而言,我认为Java不会落后。 鉴于Java具有使用JIT(及时编译器)本地编译热代码的能力,它几乎可以与用C和C ++编写的本地应用程序相提并论,但是可以通过遵循最佳实践,避免常见的性能陷阱并使用最新工具来完成很多工作和技术。
在本文中,我将介绍有关Java性能的不错的书,它们不仅会教您测量什么,如何测量,而且还将解释这些问题背后的基础知识和概念。 您不仅将了解运行Java应用程序的系统和JVM,还将学习如何使用Java API编写更快的代码。
1. Java Performance权威指南Scott Oaks
一言以蔽之,这是当前有关Java性能优化的最佳书籍 。 造成这种情况的原因有很多。要学习性能调整,您应该了解工具,过程,选项,最重要的是避免常见的性能陷阱 。 本书在这一点上得分很高,它的章节介绍了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和vs匿名类,最后是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方面拥有多年的经验,这在他们的《 The Well-Grounded Java Developer: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性能书籍,那么这是阅读该书的时候。
- 上一篇: Java程序员学习路线书籍推荐10本
- 下一篇: 清华大学出版社「区块链技术」好书推荐②(10种)
猜你喜欢
- 2024-11-12 清华大学出版社「区块链技术」好书推荐②(10种)
- 2024-11-12 Java程序员学习路线书籍推荐10本
- 2024-11-12 三行SQL代码中隐藏的数据库书单 mysql显示隐藏的数据库
- 2024-11-12 眼花缭乱的数据库,怎样选择?给你这个书单,想学哪个学哪个
- 2024-11-12 霸榜GitHub!左手Oracle,右手MySQL,让你在实战中立于不败之地
- 2024-11-12 MySQL书籍(21本) mysql书籍推荐
你 发表评论:
欢迎- 615℃几个Oracle空值处理函数 oracle处理null值的函数
- 608℃Oracle分析函数之Lag和Lead()使用
- 595℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 592℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 587℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 580℃【数据统计分析】详解Oracle分组函数之CUBE
- 569℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 560℃Oracle有哪些常见的函数? oracle中常用的函数
- 最近发表
-
- PageHelper - 最方便的 MyBatis 分页插件
- 面试二:pagehelper是怎么实现分页的,
- MyBatis如何实现分页查询?(mybatis-plus分页查询)
- SpringBoot 各种分页查询方式详解(全网最全)
- 如何在Linux上运行exe文件,怎么用linux运行windows软件
- 快速了解hive(快速了解美国50个州)
- Python 中的 pyodbc 库(pydbclib)
- Linux搭建Weblogic集群(linux weblogic部署项目步骤)
- 「DM专栏」DMDSC共享集群之部署(一)——共享存储配置
- 故障分析 | MySQL 派生表优化(mysql pipe)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- 前端获取当前时间 (50)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)