写在前面
每个公司都要求程序员写出性能良好、维护性强的代码,各种高端职位的任职要求也会把优化系统作为必选要求之一。当业务系统重构时,以及各种互联网大促前,也都期望系统的性能能变得更好。如何提高系统性能?简单的办法是升级系统硬件,或者购置更多的机器水平扩展系统,从而减少单机负荷以实现性能提高。这些办法简单粗暴,虽然效果立竿见影,但长期来看,投入大,产出小。随着系统中越来越多“坏味道”代码的堆积,这些办法的效果越来越不明显,提高单机系统的性能迫在眉睫,那么有没有优化Java系统自身的办法呢?市场上关于这方面的书籍或者聚焦于简单的开发规范,或者是纯理论的讲解。此文档尝试把Java性能优化和实际业务系统结合起来一起讲解,期望可以为读者提供一种可操作的指导来优化Java系统性能。
01 Java系统性能优化实战内容介绍
本书分为五部分,总共11章。
第一部分是第1章到第5章
第1章通过一个不超过 10行的代码优化示例介绍 如何对Java系统进行优化,如何使用JMH验证性能优化;
第2章和第3章介绍JDK的核心类String、Number和并发包;
第4章通过20多个优化技巧来说明Java性能优化的各种方法;
第5章介绍了常用的高性能工具,如Caffeine、Jackson、 HikariCP, 并对其高性能的原因做了一定的源码解析。
第二部分是第6章和第7章
不同于代码规范,这部分强调编写易于阅读的代码,会从代码注释、代码分解、面向对象三方面进行讲解。容易阅读的代码是系统性能优化的前提。
第三部分是第8章,介绍JIT优化
JIT优化对Java系统运行有深刻的影响,本章系统介绍了JIT编译器、代码缓存、内联等知识。
第四部分是第9章
包含30多个具有“坏味道”的代码片段,读者可以尝试优化代码。
第五部分是第10章和第11章
第10章介绍Java字节码和ASM,用于运行时增强Java系统;
第11章介绍JSR269规范,用于编译时增强Java系统。通过使用这些技术,可以有效提升系统的维护性和性能。
滴滴滴!转发+关注,文末即可~
02 Java性能优化权威指南
现代大规模关键性系统中的Java性能调优,是一项富有挑战的任务。你需要关注各种问题,包括算法结构、内存分配模式以及磁盘和文件I/0的使用方式。
性能调优最困难的是找出问题,即便是经验丰富的人也会被他们的直觉所误导。性能杀手总是隐藏在最意想不到的地方。正如维基百科所言:“科学(来自拉丁文scientia,意思是‘ 知识' )是以对世界可证实的解释和预见来构建和组织知识的系统。”性能调优正是这样一门实验科学, 你需要构建和进行实验,然后根据实验结果建立理论假设。所幸实验所用的性能监控工具在Java 世界里随处可见,既有可独立运行的应用程序,也有开发环境内建的性能分析工具,还有操作系统提供的工具。综合运用这些工具,才能从数据汪洋中找出真相。
主要目录大纲:
第1章“策略、方法和方法论”
介绍了Java性能调优实践中的各种方法、策略和方法论,并对传统软件开发过程提出了改进建议,即在软件开发中应该提前考虑软件应用的性能和可扩展性。
第2章“操作系统性能监控”
讨论了操作系统的性能监控,介绍了操作系统中重要的监控统计信息,以及如何用工具监控这些统计信息。本章涉及的操作系统包括Windows、Linux及OracleSolaris在其他基于Unix的系统(例如Mac OS X).上监控性能统计信息时,可使用与Linux或Oracle Solaris相同或类似的命令。
第3章“JVM概览"
高屋建瓴地介绍了HotSpot VM,描述了现代Java 虚拟机架构和运转的基本概念,并为后续的诸多章节奠定了基础。本章没有覆盖所有的Java 性能调优问题,也没有提供Java性能问题所需的全部背景知识。但对于绝大多数与现代Java虚拟机内部机制密切相关的性能问题,本章提供了足够多的背景知识。结合第7章的内容,有助于你领会如何进行HotSpot VM调优,本章也有助于理解第8、9章的主题,即如何编写高效的基准测试。
第4章“JVM性能监控”
顾名思义,涵盖了JVM性能监控的相关内容,介绍了重点需要监控的JVM统计数据,以及监控这些统计数据的工具。本章最后指出,这些工具扩展之后可以一并监控JVM和Java应用的统计数据。
第5章“Java应用性能分析”与第6章“Java 应用性能分析技巧”讲述性能分析。
这两章可看成第2章和第4章性能监控的补充。性能监控通常用来考察是否存在性能问题,或者为定位性能问题提供线索,告诉人们问题是出在操作系统、JVM、Java 应用程序还是其他地方。一旦发现性能问题,并进一步通过性能监控定位之后,通常就能进行性能分析了。第5章介绍分析Java方法和Java 堆(内存)的基本技术,还推荐了一些免费 工具来说明这几种性能分析技术背后所蕴藏的概念。本章提及的工具并不是性能分析仅有的手段,还有许多商业或者免费的工具也能提供类似的功能,其中一 些工具的功能甚至超出了第5章涉及的技术范围。
第6章提供了一些技巧
用来识别一些常见的性能分析模式,这些模式指示了一些特定类型的性能问题。本章所列的经验和技巧并不完整,却是作者在多年Java 性能调优过程中经常碰到的。附录B中包含了第6章大部分示例的源代码。
第7章“JVM性能调优入门”
涵盖了HotSpot VM性能调优的诸多方面,包括启动、内存占用、响应时间/延迟以及吞吐量。第7章介绍了调优的一系列步 骤,包括选择哪个JIT编译器,选用何种垃圾收集器,怎样调整Java堆,以及如何改动应用程序以符合干系人设定的性能目标。对于大多数读者来说,第7章可能是本书中最有用和最值得参考的章节。
第8章“Java应用的基准测试”和第9章“多层应用的基准测试”
探讨如何编写高效的基准测试。通常来说,基准测试是通过应用程序的功能子集来衡量Java 应用的性能。这两章还将展示创建高效Java 基准测试的艺术。第8章涵盖了与编写高效基准测试相关的较通用的主题,例如探讨现代JVM的一-些优化方法,还介绍了如何在基准测试中运用统计方法以增强基准测试的准确性。第9章则重点关注如何编写高效的Java EE基准测试。
有些读者对Java EE应用的性能调优特别感兴趣,第10 章“Web应用的性能调优”、第11章“Web Service的性能”及第12章“Java 持久化和Enterprise Java Bean的性能”,分别着重介绍了Web应用、Web Service、持久化及Enterprise Java Bean的性能分析。这3章会深入分析Java EE应用中常遇到的性能问题,并为常见的Java EE性能问题提供建议或解决方案。
写在最后
“对Java程序做性能优化,不仅要对应用的代码实现有足够的了解,还需要对更底层的OS、JVM有较深的了解。Java程序员也需要掌握的OS、JVM层面的很多知识;更吸引人的是,结合经验,为大家总结了一些性能优化的模式, 例如CPU利用率高的时候需要怎么进行优化,这些模式让人受益匪浅,相信读过后能对大家8常工作中做性能优化提供不小的帮助。
如何领取?一键三连,扫码即可~