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

为什么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_performance_the_definite_guide_Stock 一言以蔽之,这是当前有关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性能 长期以来,这是我最喜欢的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性能调整和编写在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的定量方法

    Java性能可伸缩性定量方法 在介绍这本书之前,让我介绍作者,他是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性能调优,但我会说这是每个现代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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/362669.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

html笔记(三)html5+css3(html5、css3、文字相关)

W3school在线教程 html5css3基本不兼容ie678。 大标题小节一、html51. html4 和 html5 的区别2. 标签语义化3. 智能表单的使用和规范二、css3选择器1. 属性选择器2. 结构性伪类选择器(层级选择器/符)3. UI状态性伪类选择器4. 相邻兄弟选择器5. 其他选择…

美登杯 E、小花梨的数组* 线段树

操作过程中标记传递 询问的时候再计算 #include<bits/stdc.h> using namespace std; //input by bxd #define rep(i,a,b) for(int i(a);i<(b);i) #define repp(i,a,b) for(int i(a);i>(b);--i) #define RI(n) scanf("%d",&(n)) #define RII(n,m) sc…

怎么得到scrollTop

我们学习一个事件 &#xff1a; 页面滚动效果 window.onscroll function() { 页面滚动语句 } 谷歌浏览器 和没有声明 DTD <DOCTYPE > &#xff1a; document.body.scrollTop; 火狐 和其他浏览器 document.documentElement.scrollTop; ie9 和 最新浏览器…

console.log打印没有效果

今天用谷歌调试的时候&#xff0c;遇到了一个很奇怪的现象&#xff0c;console.log() 完全不出效果&#xff0c;把它放到script下的第一行也没有用。然后借鉴了几个博主的。 直接改 https://blog.csdn.net/wujy_rrycbar2016/article/details/78341973 打开控制台 -> 改为 D…

CSS实战2

1. 鼠标样式 Cursor: pointer 鼠标变成小手 Cursor: default; 小白 Cursor : move; 移动 Cursor : text ; 文本输入 网页布局&#xff1a; 给一个盒子 &#xff1a; 宽度高度 背景 边框 位置 2.border-radius 圆角矩形 border-radius: 7px 7px 7p…

Linux Shell 常用命令与目录分区的学习总结

很早就想根据自己的学习规律和遗忘规律&#xff0c;自己总结一下Linux/Unix系统的Shell命令&#xff0c;一来便于自己时常查询之用&#xff0c;二来也分享于各位博友 Linux shell是系统的用户界面&#xff0c;即命令行。它提供了用户与内核进行交互式操作与控制的接口&#xff…

visual studio 应用场景

转载于:https://www.cnblogs.com/zhangbing12304/p/10894347.html

elementUI-添加自定义图标

elementui的小图标有限&#xff0c;跟UI给的不一样&#xff0c;这个时候咋办呢&#xff1f;百度走起。。。。参考了两篇博主分享的 自定义elementui中的图标 和 建立图标库&#xff0c;这里主要用到第一种 实际中&#xff1a; elementUI导航栏 具体代码&#xff1a; //自定…

echarts(一)下载引入,调色盘,[标题、图例组件、坐标轴]

一个简单的例子 1. 下载并引入 &#xff08;1&#xff09;npm install echarts --save &#xff08;2&#xff09;import echarts from echarts //main.js引入echarts 或者在组件中按需引入&#xff0c;查看按需引入的详细模块 <script>// 引入 ECharts 主模块var echa…

P3740 [HAOI2014]贴海报 离散化+线段树

题目描述 Bytetown城市要进行市长竞选&#xff0c;所有的选民可以畅所欲言地对竞选市长的候选人发表言论。为了统一管理&#xff0c;城市委员会为选民准备了一个张贴海报的electoral墙。 张贴规则如下&#xff1a; electoral墙是一个长度为N个单位的长方形&#xff0c;每个单位…

Dreamweaver Flash Photoshop网页设计综合应用 (智云科技) [iso] 1.86G​

全书共15章&#xff0c;主要包括网页制作基础、Dreamweaver CC网页制作、Photoshop CC网页图像设计、Flash CC网页动画设计以及综合案例实战5个部分。通过本书的学习&#xff0c;不仅能让读者学会三大软件的基本操作&#xff0c;而且本书中列举的实战案例&#xff0c;还可以让读…

如何使用示例从Java中的类路径加载资源

Java中的类路径不仅用于加载.class文件&#xff0c;而且还可以用于加载资源&#xff0c;例如属性文件&#xff0c;图像&#xff0c;图标&#xff0c;缩略图或任何二进制内容。 Java提供了API来将这些资源读取为InputStream或URL。 假设您在项目的config文件夹中有一个属性文件 …

Ext 3.0 +ASP.NET2.0 可视化开发介绍

Ext Designer 总算出来了&#xff01;&#xff01;&#xff01;基于Web的应用开发终于可以可视化开发了&#xff0c;而且可以几乎不敲1行代码。 准备工具&#xff1a; &#xff08;1&#xff09;Ext Designer 1.0.2 &#xff08;2&#xff09;Visual Studio 2005 第一步&#x…

创建vue项目(一)搭建vue-cli、项目文件介绍、简单配置

记录一下 拉取项目时 npm run dev 报错 输入&#xff1a;npm rebuild node-sass 再重新 npm run dev 如果不能解决&#xff0c;请看这里 一、搭建vue-cli vue create 项目名称? Please pick a preset: > default (babel, eslint) //默认 > Manually select features …

JPA / Hibernate实体状态转换的初学者指南

介绍 Hibernate将开发人员的思维方式从SQL语句转移到实体状态转换。 一旦实体由Hibernate主动管理&#xff0c;所有更改将自动传播到数据库。 操作域模型实体&#xff08;及其关联&#xff09;比编写和维护SQL语句容易得多。 如果没有ORM工具&#xff0c;则添加新列需要修改所…

创建vue项目(二)引入elementUi、axios、准备静态资源、封装组件(.vue,js代码等)

下载安装node -> vue-cli -> 配置路由 -> 引入elementUi -> 公共组件 一、引入elementUi 顺便一提axios使用说明 和axios在vue中使用 二、准备静态资源 三、封装.vue公共组件 四、封装.js公共组件 五、封装公共的js代码 六、封装全局的filter、directive等 一、引入…

Spring DI的配置使用

1、 依赖和依赖注入 传统应用程序设计中所说的依赖一般指“类之间的关系”&#xff0c;那先让我们复习一下类之间的关系&#xff1a; 泛化&#xff1a;表示类与类之间的继承关系、接口与接口之间的继承关系&#xff1b; 实现&#xff1a;表示类对接口的实现&#xff1b; 依赖&a…

创建vue项目(三)路由跳转、反向代理、本地存储、状态管理

数据更新渲染&#xff0c;axios请求数据&#xff0c;配置环境 一、路由跳转 app.vue <template><div id"app"><keep-alive><router-view/></keep-alive></div> </template><script> export default {name: app }…

jinfo:JVM运行时配置的命令行浏览

在最近的几篇博客中&#xff08;特别是在对Java EE 7性能调优和优化以及WildFly性能调优的书的评论中&#xff09;&#xff0c;我引用了自己过去在某些Oracle JDK命令行工具上的博客文章。 令我震惊的是&#xff0c;我从来没有专门解决过漂亮的jinfo工具&#xff0c;这篇文章旨…

创建vue项目(四)路由相关知识、路由守卫、插槽、打包小细节

一、路由相关点 1. 路由跳转传参以及接参 https://segmentfault.com/a/1190000012393587 方法一&#xff1a; &#xff08;1&#xff09; 参数配置&#xff1a; { path : xx/:参数变量,component:xx}(2) 使用 <router-link toxx/参数></router-link>(3) 传参 …