Java性能权威指南(第2版)
Scott Oaks
党文亮 译
出版时间:2022年04月
Java性能优化越来越难。曾经,通过引入即时编译器,就能实现8倍的性能飞跃。而今,你可能会有疑问:Java性能还有多大的优化空间?本书直面这一问题,证明对于工程师而言,仍有很多工作可做!作为曾在Java性能工程小组深耕多年的老牌工程师,本书作者透彻解释了JVM和Java平台特性对应用程序性能的影响。
应用程序开发人员和性能优化工程师将了解针对Java 8和Java 11的性能优化措施、工具和方法,也会了解提前编译和一些实验性的垃圾回收器。Java的调优标志数以百计。读完本书,你不必再盲目测试这些标志的效果,而是能够从根本上理解应用程序性能欠佳的原因,并熟练地运用恰当的标志提升性能。
● 理解Java平台特性和编译器如何影响性能
● 掌握Java垃圾回收机制
● 通过遵循4项原则来优化性能测试结果
● 使用JDK等工具了解Java应用程序的性能情况
● 通过编程实践来尽量降低垃圾回收器的不良影响
● 解决Java API的各种性能难题
● 改善数据库应用程序的性能
  1. 前言
  2. 第1章 导论
  3. 1.1 概述
  4. 1.2 平台和约定
  5. 1.2.1 Java平台
  6. 1.2.2 硬件平台
  7. 1.3 全面的性能
  8. 1.3.1 写出更好的算法
  9. 1.3.2 写更少的代码
  10. 1.3.3 过早优化
  11. 1.3.4 其他:数据库永远是瓶颈
  12. 1.3.5 常见优化
  13. 1.4 小结
  14. 第2章 性能测试方法
  15. 2.1 测试真实的应用程序
  16. 2.1.1 微基准测试
  17. 2.1.2 宏基准测试
  18. 2.1.3 介基准测试
  19. 2.2 理解吞吐量、批处理时间和响应时间
  20. 2.2.1 测量批处理时间
  21. 2.2.2 测量吞吐量
  22. 2.2.3 测量响应时间
  23. 2.3 理解可变性
  24. 2.4 早测试、常测试
  25. 2.5 基准测试示例
  26. 2.5.1 Java微基准测试工具
  27. 2.5.2 常用代码示例
  28. 2.6 小结
  29. 第3章 Java性能工具箱
  30. 3.1 操作系统工具和分析
  31. 3.1.1 CPU使用率
  32. 3.1.2 CPU运行队列
  33. 3.1.3 磁盘使用率
  34. 3.1.4 网络使用率
  35. 3.2 Java监控工具
  36. 3.2.1 基本的VM信息
  37. 3.2.2 线程信息
  38. 3.2.3 类信息
  39. 3.2.4 实时GC分析
  40. 3.2.5 堆转储后期处理
  41. 3.3 性能分析工具
  42. 3.3.1 采样分析器
  43. 3.3.2 探查分析器
  44. 3.3.3 阻塞方法和线程时间线
  45. 3.3.4 原生分析器
  46. 3.4 JFR
  47. 3.4.1 Java Mission Control
  48. 3.4.2 JFR概览
  49. 3.4.3 开启JFR
  50. 3.4.4 选择JFR事件
  51. 3.5 小结
  52. 第4章 使用即时编译器
  53. 4.1 即时编译器:概览
  54. 4.2 分层编译
  55. 4.3 常用的编译器标志
  56. 4.3.1 优化代码缓存
  57. 4.3.2 检查编译过程
  58. 4.3.3 分层编译级别
  59. 4.3.4 逆优化
  60. 4.4 高级编译器标志
  61. 4.4.1 编译阈值
  62. 4.4.2 编译程
  63. 4.4.3 内联
  64. 4.4.4 逃逸分析
  65. 4.4.5 CPU相关代码
  66. 4.5 分层编译的权衡
  67. 4.6 GraalVM
  68. 4.7 预编译
  69. 4.7.1 提前编译
  70. 4.7.2 GraalVM原生编译
  71. 4.8 小结
  72. 第5章 垃圾回收简介
  73. 5.1 垃圾回收概览
  74. 5.1.1 分代垃圾回收器
  75. 5.1.2 GC算法
  76. 5.1.3 选择GC算法
  77. 5.2 GC优化基础
  78. 5.2.1 调整堆的大小
  79. 5.2.2 调整分代大小
  80. 5.2.3 调整元空间大小
  81. 5.2.4 控制并行
  82. 5.3 GC工具
  83. 5.3.1 在JDK 8中开启GC日志
  84. 5.3.2 在JDK 11中开启GC日志
  85. 5.4 小结
  86. 第6章 垃圾回收算法
  87. 6.1 理解Throughput回收器
  88. 6.2 理解G1垃圾回收器
  89. 6.3 理解CMS回收器
  90. 6.4 高级优化
  91. 6.4.1 晋升和Survivor空间
  92. 6.4.2 分配大对象
  93. 6.4.3 AggressiveHeap标志
  94. 6.4.4 完全掌控堆的大小
  95. 6.5 实验性GC算法
  96. 6.5.1 并发压缩:ZGC和Shenandoah
  97. 6.5.2 无回收:Epsilon GC
  98. 6.6 小结
  99. 第7章 堆内存最佳实践
  100. 7.1 堆分析
  101. 7.1.1 堆直方图
  102. 7.1.2 堆转储
  103. 7.1.3 内存溢出错误
  104. 7.2 减少内存使用
  105. 7.2.1 减小对象大小
  106. 7.2.2 使用延迟初始化
  107. 7.2.3 使用不可变对象和标准化对象
  108. 7.3 对象生命周期管理
  109. 7.3.1 对象重用
  110. 7.3.2 软引用、弱引用和其他引用
  111. 7.3.3 压缩的普通对象指针
  112. 7.4 小结
  113. 第8章 原生内存最佳实践
  114. 8.1 内存占用
  115. 8.1.1 测量内存占用
  116. 8.1.2 最小化内存占用
  117. 8.1.3 原生内存跟踪
  118. 8.1.4 共享库原生内存
  119. 8.2 针对操作系统的JVM优化
  120. 8.3 小结
  121. 第9章 线程和同步性能
  122. 9.1 线程和硬件
  123. 9.2 线程池和ThreadPoolExecutor
  124. 9.2.1 设置最大线程数
  125. 9.2.2 设置最小线程数
  126. 9.2.3 线程池任务大小
  127. 9.2.4 设置ThreadPoolExecutor的大小
  128. 9.3 ForkJoinPool
  129. 9.3.1 工作窃取
  130. 9.3.2 自动并行化
  131. 9.4 线程同步
  132. 9.4.1 同步的代价
  133. 9.4.2 避免同步
  134. 9.4.3 伪共享
  135. 9.5 JVM线程优化
  136. 9.5.1 优化线程栈大小
  137. 9.5.2 偏向锁
  138. 9.5.3 线程优先级
  139. 9.6 监控线程和锁
  140. 9.6.1 查看线程
  141. 9.6.2 查看阻塞线程
  142. 9.7 小结
  143. 第10章 Java服务器
  144. 10.1 Java NIO概览
  145. 10.2 服务器容器
  146. 10.2.1 优化服务器线程池
  147. 10.2.2 异步Rest服务器
  148. 10.3 异步出站调用
  149. 10.4 JSON处理
  150. 10.4.1 解析和编组概览
  151. 10.4.2 JSON对象
  152. 10.4.3 JSON解析
  153. 10.5 小结
  154. 第11章 数据库性能最佳实践
  155. 11.1 示例数据库
  156. 11.2 JDBC
  157. 11.2.1 JDBC驱动
  158. 11.2.2 JDBC连接池
  159. 11.2.3 预处理语句和语句池
  160. 11.2.4 事务
  161. 11.2.5 结果集处理
  162. 11.3 JPA
  163. 11.3.1 优化JPA写
  164. 11.3.2 优化JPA读
  165. 11.3.3 JPA缓存
  166. 11.4 Spring Data
  167. 11.5 小结
  168. 第12章 Java SE API技巧
  169. 12.1 字符串
  170. 12.1.1 压缩字符串
  171. 12.1.2 重复字符串和字符串保留
  172. 12.1.3 字符串连接
  173. 12.2 缓冲I/O
  174. 12.3 类加载
  175. 12.4 随机数
  176. 12.5 Java原生接口
  177. 12.6 异常
  178. 12.7 日志
  179. 12.8 Java集合API
  180. 12.8.1 同步和非同步
  181. 12.8.2 设置集合大小
  182. 12.8.3 集合与内存效率
  183. 12.9 Lambda和匿名类
  184. 12.10 流和过滤器的性能
  185. 12.11 对象序列化
  186. 12.11.1 瞬时字段
  187. 12.11.2 覆盖默认的序列化
  188. 12.11.3 压缩序列化数据
  189. 12.11.4 跟踪重复对象
  190. 12.12 小结
  191. 附录 调优标志总结
书名:Java性能权威指南(第2版)
作者:Scott Oaks
译者:党文亮 译
国内出版社:人民邮电出版社
出版时间:2022年04月
书号:978-7-115-58736-7
原版书书名:Java Performance, Second Edition
原版书出版商:O'Reilly Media
Scott Oaks
 
Scott Oaks,Oracle公司架构师,从事Oracle云平台软 件的性能优化工作。在加入Oracle之 前,是Sun公司Java性能工程组的高级软件工程师。自1987年就职于Sun公司以来,他曾专攻于多项技术,从SunOS核心技术到网络编程和RPC,再到X Window系统和线程技术等等。从1995年初,他开始将Java作为其研究重点,并致力于把Java技术介绍给终端用户。Scott负责为《The Java Report》撰写关于Java解决方案的专栏文章,此外他还在O'Reilly出版了三本Java类图书:《Java Security》,《Java Threads》以及《Jini in a Nutshell》(后两本书是与Henry Wong合作出版的)。在Internet上,Scott还以其开发的OPEN LOOK 窗口管理器olvwm而具有很高的知名度。
Scott在丹佛大学获得了数学和计算机科学的学士学位,并在Brown大学获得了计算机科学的硕士学位。在加入Sun之前,他曾经是Stearns的Bear研究分部的成员。
业余时间,Scott热爱音乐(他参加了纽约的相关社团,演奏长笛和短笛),热衷于烹调和戏剧,另外还非常喜欢与伴侣James去旅游。




Scott Oaks是Sun公司的Java技术专家,他从1987年开始在这里工作,在这里,他专门从事各种不同的技术,从SunOS内核到网络编程,从RPC到X Window系统到线程化。从1995年上半年开始,他主要专注于Java和为最终用户提拱Java技术;他为《The Java Report》撰写Java解决方案方面的每月专栏。在Internet上,他以olvwm的作者和OPEN LOOK window管理者而闻名。他还是Java Security(O'Reilly出版)一书的作者。
Scott从丹佛大学获得了数学和计算机科学的学士学位,并且从布朗大学获得了计算机科学的硕士学位。在加入Sun公司以前,他一直在Bear公司的Stearns研究分公司工作。
在业余生活中,他喜欢音乐、烹饪、戏剧,以及和他的伴侣James一起旅行。
 
 
购买选项
定价:129.80元
书号:978-7-115-58736-7
出版社:人民邮电出版社