资源详情

Java性能优化实践 JVM调优策略 工具与技巧(图灵出品)

Java性能优化实践 JVM调优策略 工具与技巧(图灵出品)-电子书下载


作者: [英]本杰明• J. 埃文斯(Benjamin J. Evans)/[英]詹姆斯•高夫(James Gough)/[英]克里斯•纽兰(Chris Newland)
出版社: 人民邮电出版社
原作名: Optimizing Java: Practical Techniques for Improved Performance Tuning
译者: 曾波
出版年: 2020-11
页数: 340
定价: 109
装帧: 平装
丛书: 图灵程序设计丛书·Java系列
ISBN: 9787115552334

下载次数:2


本站推荐

书籍资料

  • 内容简介
  • 作者介绍
  • 书籍目录

本书从实验科学的角度探讨了Java性能优化的方方面面,重点阐述了最新的实用JVM性能调优策略、工具和技巧。通过本书,我们不仅可以了解Java原理和技术如何充分利用现代硬件和操作系统、衡量Java性能的陷阱以及微基准测试的弊端有哪些,还能深入研究可能使团队烦恼的几种性能测试和常见反模式、JVM垃圾收集、JIT编译和Java语言性能技术等。本书为读者打开了深入理解Java性能的大门,并以路标助力其优化之旅。

本杰明•J.埃文斯(Benjamin J.Evans),初创公司jClarity联合创始人和技术Fellow,获得过Java Champion荣誉和JavaOne Rockstar奖,《Java程序员修炼之道》合著者。
詹姆斯•高夫(James Gough),Java开发者和技术图书作者,任职于摩根士丹利,专注构建面向客户的技术。
克里斯•纽兰(Chris Newland),JITWatch项目作者,Java Champion荣誉得主,ADVFN高级开发者和团队负责人,擅长使用Java来处理实时的股市数据。

前言xix
第1章 明确优化与性能1
1.1 关于Java性能的误解1
1.2 Java性能概览2
1.3 作为实验科学的性能3
1.4 性能分类方法4
1.4.1 吞吐量4
1.4.2 延迟5
1.4.3 容量5
1.4.4 利用率5
1.4.5 效率5
1.4.6 可扩展性5
1.4.7 降级6
1.4.8 各种性能观测之间的关联6
1.5 阅读性能图7
1.6 小结11
第2章 JVM概览12
2.1 解释和类加载12
2.2 执行字节码13
2.3 HotSpot简介17
2.4 JVM内存管理19
2.5 线程和Java内存模型20
2.6 认识不同的JVM20
2.7 JVM的监控和工具22
2.8 小结25
第3章 硬件与操作系统26
3.1 现代硬件简介27
3.2 内存27
3.3 现代处理器特性33
3.3.1 翻译后备缓冲器33
3.3.2 分支预测和推测执行33

.3.3 硬件存储器模型33
3.4 操作系统34
3.4.1 调度器35
3.4.2 时间问题36
3.4.3 上下文切换37
3.5 一个简单的系统模型38
3.6 基本探测策略39
3.6.1 利用CPU40
3.6.2 垃圾收集41
3.6.3 I/O41
3.6.4 机械共鸣43
3.7 虚拟化44
3.8 JVM和操作系统45
3.9 小结46
第4章 性能测试模式与反模式47
4.1 性能测试的类型47
4.1.1 延迟测试48
4.1.2 吞吐量测试48
4.1.3 负载测试49
4.1.4 压力测试49
4.1.5 耐久性测试49
4.1.6 容量规划测试49
4.1.7 退化测试50
4.2 最佳实践入门50
4.2.1 自上而下的性能测试50
4.2.2 创建一个测试环境51
4.2.3 确定性能要求52
4.2.4 Java特有的问题52
4.2.5 将性能测试当作软件开发生命周期的一部分52
4.3 性能反模式53
4.3.1 厌倦53
4.3.2 填充简历54
4.3.3 同侪压力54
4.3.4 缺乏理解54
4.3.5 被错误理解的问题/不存在的问题54
4.4 性能反模式目录55
4.4.1 被热门技术分心55
4.4.2 被简单分心55
4.4.3 性能调优天才56
4.4.4 按照坊间传说调优57
4.4.5 把责任归咎给驴58
4.4.6 忽略大局59
4.4.7 用户验收测试环境就是我的计算机60
4.4.8 类似生产环境的数据很难表示61
4.5 认知偏差与性能测试62
4.5.1 还原论思维62
4.5.2 确认偏差63
4.5.3 战争的迷雾(行动偏差)63
4.5.4 风险偏差64
4.5.5 埃尔斯伯格悖论64
4.6 小结65
第5章 微基准测试与统计66
5.1 Java性能测量66
5.2 JMH70
5.2.1 不是万不得已,不要做基准测试(一个真实的故事)70
5.2.2 关于何时使用微基准测试的启发70
5.2.3 JMH框架72
5.2.4 执行基准测试73
5.3 JVM性能统计77
5.31 误差类型78
5.32 非正态统计82
5.4 统计的解释85
5.5 小结88
第6章 理解垃圾收集89
6.1 标记和清除90
6.2 HotSpot运行时92
6.2.1 对象的运行时表示92
6.2.2 GC根和Arena95
6.3 分配与生命周期96
6.4 HotSpot中的垃圾收集98
6.4.1 线程本地分配98
6.4.2 半空间收集99
6.5 并行收集器100
6.5.1 新生代并行收集101
6.5.2 老年代并行收集102
6.5.3 并行收集器的局限性103
6.6 分配的作用104
6.7 小结108
第7章 垃圾收集高级话题109
7.1 权衡与可插拔的收集器109
7.2 并发垃圾收集理论111
7.2.1 JVM安全点111
7.2.2 三色标记112
7.3 CMS114
7.3.1 CMS是如何工作的115
7.3.2 用于CMS的基本JVM标志117
7.4 G1118
7.4.1 G1堆布局和区域118
7.4.2 G1算法设计119
7.4.3 G1的各阶段120
7.4.4 用于G1的基本JVM标志121
7.5 Shenandoah121
7.5.1 并发压缩123
7.5.2 获取Shenandoah123
7.6 C4(AzulZing)124
7.7 IBMJ9中的均衡收集器127
7.7.1 J9对象头128
7.7.2 Balanced收集器的大数组129
7.7.3 NUMA和Balanced收集器129
7.8 遗留的HotSpot收集器130
7.8.1 Serial和SerialOld130
7.8.2 增量式CMS131
7.8.3 已被废弃和删除的垃圾收集组合131
7.8.4 Epsilon131
7.9 小结132
第8章 垃圾收集日志、监控、调优及工具133
8.1 认识垃圾收集日志133
8.1.1 开启垃圾收集日志记录133
8.1.2 垃圾收集日志与JMX的对比134
8.1.3 JMX的缺点135
8.1.4 垃圾收集日志数据带来的好处136
8.2 日志解析工具136
8.2.1 Censum137