市面上介绍Java的书有很多,但专注于Java性能的并不多,能游刃有余地展示Java性能优化难点的更是凤毛麟角,本书即是其中之一。通过使用JVM和Java平台,以及Java语言和应用程序接口,本书详尽讲解了Java性能调优的相关知识,帮助读者深入理解Java平台性能的各个方面,最终使程序如虎添翼。
通过阅读本书,你可以:
运用四个基本原则最大程度地提升性能测试的效果
使用JDK中自带的工具收集Java应用的性能数据
理解JIT编译器的优缺点
调优JVM垃圾收集器以减少对程序的影响
学习管理堆内存和JVM原生内存的方法
了解如何最大程度地优化Java线程及同步的性能
解决Java EE和Java SE应用程序接口的性能问题
改善Java驱动的数据库应用程序的性能
推荐序xi
前言xii
第1章 导论1
1.1 概述2
1.2 平台版本约定2
1.3 全面的性能调优4
1.3.1 编写更好的算法4
1.3.2 编写更少的代码4
1.3.3 老调重弹的过早优化5
1.3.4 其他:数据库很可能就是瓶颈6
1.3.5 常见的优化7
1.4 小结8
第2章 性能测试方法9
2.1 原则1:测试真实应用9
2.1.1 微基准测试9
2.1.2 宏基准测试13
2.1.3 介基准测试15
2.1.4 代码示例16
2.2 原则2:理解批处理流逝时间、吞吐量和响应时间19
2.2.1 批处理流逝时间19
2.2.2 吞吐量测试20
2.2.3 响应时间测试20
2.3 原则3:用统计方法应对性能的变化23
2.4 原则4:尽早频繁测试26
2.5 小结28
第3章 Java性能调优工具箱29
3.1 操作系统的工具和分析29
3.1.1 CPU使用率29
3.1.2 CPU运行队列32
3.1.3 磁盘使用率33
3.1.4 网络使用率34
3.2 Java监控工具35
3.2.1 基本的VM信息36
3.2.2 线程信息39
3.2.3 类信息39
3.2.4 实时GC分析39
3.2.5 事后堆转储39
3.3 性能分析工具39
3.3.1 采样分析器40
3.3.2 探查分析器41
3.3.3 阻塞方法和线程时间线42
3.3.4 本地分析器44
3.4 Java任务控制45
3.4.1 Java飞行记录器46
3.4.2 开启JFR52
3.4.3 选择JFR 事件54
3.5 小结56
第4章 JIT编译器58
4.1 JIT编译器:概览58
4.2 调优入门:选择编译器类型(Client、Server或二者同用)61
4.2.1 优化启动62
4.2.2 优化批处理63
4.2.3 优化长时间运行的应用64
4.3 Java和JIT编译器版本64
4.4 编译器中级调优67
4.4.1 调优代码缓存67
4.4.2 编译阈值68
4.4.3 检测编译过程70
4.5 高级编译器调优73
4.5.1 编译线程73
4.5.2 内联74
4.5.3 逃逸分析75
4.6 逆优化76
4.6.1 代码被丢弃77
4.6.2 逆优化僵尸代码78
4.7 分层编译级别79
4.8 小结80
第5章 垃圾收集入门81
5.1 垃圾收集概述81
5.1.1 分代垃圾收集器83
5.1.2 GC算法84
5.1.3 选择GC算法87
5.2 GC调优基础92
5.2.1 调整堆的大小92
5.2.2 代空间的调整95
5.2.3 永久代和元空间的调整96
5.2.4 控制并发97
5.2.5 自适应调整98
5.3 垃圾回收工具99
5.4 小结102
第6章 垃圾收集算法103
6.1 理解Throughput收集器103
6.2 理解CMS收集器109
6.2.1 针对并发模式失效的调优113
6.2.2 CMS收集器的永久代调优116
6.2.3 增量式CMS垃圾收集117
6.3 理解G1垃圾收集器118
6.4 高级调优126
6.4.1 晋升及Survivor空间126
6.4.2 分配大对象129
6.4.3 AggressiveHeap标志136
6.4.4 全盘掌控堆空间的大小137
6.5 小结138
第7章 堆内存最佳实践140
7.1 堆分析140
7.1.1 堆直方图141
7.1.2 堆转储142
7.1.3 内存溢出错误146
7.2 减少内存使用149
7.2.1 减少对象大小149
7.2.2 延迟初始化152
7.2.3 不可变对象和标准化对象156
7.2.4 字符串的保留157
7.3 对象生命周期管理160
7.3.1 对象重用160
7.3.2 弱引用、软引用与其他引用165
7.4 小结175
第8章 原生内存最佳实践176
8.1 内存占用176
8.1.1 测量内存占用177
8.1.2 内存占用最小化178
8.1.3 原生NIO缓冲区178
8.1.4 原生内存跟踪179
8.2 针对不同操作系统优化JVM182
8.2.1 大页182
8.2.2 压缩的oop185
8.3 小结187
第9章 线程与同步的性能188
9.1 线程池与ThreadPoolExecutor188
9.1.1 设置最大线程数189
9.1.2 设置最小线程数192
9.1.3 线程池任务大小193
9.1.4 设置ThreadPoolExecutor的大小193
9.2 ForkJoinPool195
9.3 线程同步201
9.3.1 同步的代价202
9.3.2 避免同步205
9.3.3 伪共享208
9.4 JVM线程调优211
9.4.1 调节线程栈大小211
9.4.2 偏向锁212
9.4.3 自旋锁212
9.4.4 线程优先级213
9.5 监控线程与锁213
9.5.1 查看线程214
9.5.2 查看阻塞线程214
9.6 小结217
第10章 Java EE 性能调优218
10.1 Web容器的基本性能218
10.2 线程池222
10.3 EJB会话Bean223
10.3.1 调优EJB对象池223
10.3.2 调优EJB缓存225
10.3.3 本地和远程实例226
10.4 XML和JSON处理227
10.4.1 数据大小227
10.4.2 解析和编组概述229
10.4.3 选择解析器230
10.4.4 XML验证235
10.4.5 文档模型237
10.4.6 Java对象模型240
10.5 对象序列化241
10.5.1 transient字段241
10.5.2 覆盖默认的序列化241
10.5.3 压缩序列化数据244
10.5.4 追踪对象复制246
10.6 Java EE网络API248
10.7 小结250
第11章 数据库性能的最佳实践251
11.1 JDBC251
11.1.1 JDBC驱动程序252
11.1.2 预处理语句和语句池253
11.1.3 JDBC连接池255
11.1.4 事务256
11.1.5 结果集的处理262
11.2 JPA264
11.2.1 事务处理264
11.2.2 对JPA的写性能进行优化267
11.2.3 对JPA的读性能进行优化268
11.2.4 JPA缓存271
11.2.5 JPA的只读实体276
11.3 小结277
第12章 Java SE API技巧278
12.1 缓冲式I/O278
12.2 类加载280
12.3 随机数284
12.4 Java原生接口285
12.5 异常287
12.6 字符串的性能290
12.7 日志291
12.8 Java集合类API292
12.8.1 同步还是非同步293
12.8.2 设定集合的大小294
12.8.3 集合与内存使用效率295
12.9 AggressiveOpts标志296
12.9.1 替代实现296
12.9.2 其他标志297
12.10 Lambda表达式和匿名类297
12.11 流和过滤器的性能300
12.12 小结302
附录A 性能调优标志摘要303
作者简介312
关于封面312
《合为一家》内容简介:十六国北魏时期是中国历史上民族融合的重要时期,也是多元文化激荡的时期,各民族之间的互动非常频繁,混居
《历史文化名城名镇名村系列:东村》内容简介:东村,古称“东园村”,这个太湖边尚存的为数不多的千年古村,历史遗存丰富,现存明
《激荡人生》内容简介:《激荡人生》是著名财经作家吴晓波继《大败局》、《激荡三十年》之后的又一力作。《激荡人生:一起走过三十
网络操作系统Linux管理与配置 本书特色 陈志涛主编的《网络操作系统Linux管理与配置》是21世纪高职高专IT类专业系列教材之一。教材内容贯彻“工学结合”指...
《新思想 新境界》内容简介:该书稿以马克思主义理论为指导,紧扣贯彻落实习近平新时代中国特色社会主义思想和十九大报告精神,分专
《忽有山河大地:龚贤笔下的“荒原”》内容简介:本系列作品,通过对元代以来十六位画家的观照,来看文人画对生命“真性”追踪的内
全套上、下两册,浓缩2006年电脑报精华文章。附录包含70余篇简明IT应用指南,覆盖软件、硬盘、数码、网络四大领域。配赠权威实用
MATLAB R2016a完全自学一本通-畅销升级版-附赠近150页超值电子书 本书特色 本书面向MATLAB的初中级读者,在介绍MATLAB R2016a集成...
《中国画颜色的研究》内容简介:《中国画颜色的研究》一书初版于1955年,由朝花美术出版社出版。《中国画颜色的研究》是作者研究传
很多用过索尼产品的人,恐怕都会有这样别有一番滋味的记忆:夹着立体声收录机招摇过市,而且这台收录机一定要有SONY标志,就像如
《RESTful Web APIs中文版》内容简介:本书是针对RESTful API的实用指南,通过展示各种用来创建高可用应用的强大工具,讲解REST的深
《聂卫平围棋习题精解·死活专项训练(从1级到1段)》内容简介:本书是为围棋水平在1级到1段的棋友专门编写的死活专项习题集。本书
《Abaqus GUI程序开发指南:Python语言》内容简介:本书共6章,主要讲解采用Python语言对Abaqus进行图形界面程序的开发,包括GUI插
VisualBasic程序设计教程 本书特色 本书特色:与本书配套的《visual basic程序设计教程题解与上机指导》(第四版)已出版。电子教案及例题程序代...
《给孩子讲历史》内容简介:本书一是丰富孩子的知识。历史是一个知识的宝藏,文学、政治、科学等人类所有的文明成果尽在其中,通过
随着虚拟环境、增强现实、混合现实以及普适计算等“脱离桌面”技术的出现,三维用户界面(3DUI)的设计和开发已经成为一个重要的
单片机中级教程--原理与应用(第2 版) 内容简介 本书为普通高等教育“十一五”国家级规划教材,以80C51系列单片机为主线,系统地介绍了单片机的组成、工作原理...
《Photoshop电商设计与装修从新手到高手》内容简介:本书是一本系统讲解Photoshop电商设计与装修的教程。主要讲述了Photoshop电商设
《3分钟,让公司介绍发光》内容简介:本书聚焦公司介绍的书写和展示,力争实现:用3分钟的介绍,让客户选择,被客户信任,达成合作
《JavaWeb开发之道》是一本集编程感悟、技巧、陷阱、谬误、算法和方案为一体的编程书籍,旨在引导读者如何学习编程,帮助读者丰富