内容简介
本书是Java性能领域的经典著作,由资深Java性能专家Scott Oaks撰写,全面系统地介绍了Java性能优化的核心概念、实用技术和最佳实践。全书涵盖从基础性能监控到高级调优的完整知识体系,帮助开发者深入理解Java虚拟机(JVM)的工作原理,从而编写出更高效、更可靠的Java应用程序。
书中详细讲解了性能测试方法论、JVM垃圾回收机制及其调优、JIT编译器优化、多线程与并发性能、Java集合类的性能特性、I/O与网络性能优化等关键主题。每个知识点都配有丰富的代码示例和实际案例分析,使理论与实践紧密结合。作者还特别关注了现代Java应用中的常见性能陷阱,并提供了针对性的解决方案。
无论你是初学者还是经验丰富的Java开发者,本书都能为你提供切实可行的性能优化指导。通过阅读本书,你将学会如何诊断性能瓶颈、选择合适的性能指标、运用各类性能监控工具(如JConsole、VisualVM、Java Mission Control等),并掌握从代码层面到JVM层面的系统性调优策略。本书不仅传授知识,更培养性能优化的思维模式,是Java开发者案头必备的参考书。
目录
O’Reilly Media, Inc. 介绍
业界评论
推荐序
读者对象
排版约定
使用代码示例
Safari® Books Online
联系我们
第 1 章 导论
1.1 概述
1.2 平台版本约定
JVM调优标志
1.3 全面的性能调优
1.3.1 编写更好的算法
1.3.2 编写更少的代码
1.3.3 老调重弹的过早优化
1.3.4 其他:数据库很可能就是瓶颈
1.3.5 常见的优化
1.4 小结
第 2 章 性能测试方法
2.1 原则1:测试真实应用
2.1.1 微基准测试
2.1.2 宏基准测试
2.1.3 介基准测试
2.1.4 代码示例
2.2 原则2:理解批处理流逝时间、吞吐量和响应时间
2.2.1 批处理流逝时间
2.2.2 吞吐量测试
2.2.3 响应时间测试
2.3 原则3:用统计方法应对性能的变化
2.4 原则4:尽早频繁测试
2.5 小结
第 3 章 Java 性能调优工具箱
3.1 操作系统的工具和分析
3.1.1 CPU使用率
3.1.2 CPU运行队列
3.1.3 磁盘使用率
3.1.4 网络使用率
3.2 Java监控工具
3.2.1 基本的VM信息
3.2.2 线程信息
3.2.3 类信息
3.2.4 实时GC分析
3.2.5 事后堆转储
3.3 性能分析工具
3.3.1 采样分析器
3.3.2 探查分析器
3.3.3 阻塞方法和线程时间线
3.3.4 本地分析器
3.4 Java任务控制
3.4.1 Java飞行记录器
3.4.2 开启JFR
3.4.3 选择JFR事件
3.5 小结
第 4 章 JIT 编译器
4.1 JIT编译器:概览
热点编译
4.2 调优入门:选择编译器类型(Client、Server或二者同用)
4.2.1 优化启动
4.2.2 优化批处理
4.2.3 优化长时间运行的应用
4.3 Java和JIT编译器版本
4.4 编译器中级调优
4.4.1 调优代码缓存
4.4.2 编译阈值
4.4.3 检测编译过程
4.5 高级编译器调优
4.5.1 编译线程
4.5.2 内联
4.5.3 逃逸分析
4.6 逆优化
4.6.1 代码被丢弃
4.6.2 逆优化僵尸代码
4.7 分层编译级别
4.8 小结
第 5 章 垃圾收集入门
5.1 垃圾收集概述
5.1.1 分代垃圾收集器
5.1.2 GC算法
5.1.3 选择GC算法
5.2 GC调优基础
5.2.1 调整堆的大小
5.2.2 代空间的调整
5.2.3 永久代和元空间的调整
5.2.4 控制并发
5.2.5 自适应调整
5.3 垃圾回收工具
5.4 小结
第 6 章 垃圾收集算法
6.1 理解Throughput收集器
堆大小的自适应调整和静态调整
6.2 理解CMS收集器
6.2.1 针对并发模式失效的调优
6.2.2 CMS收集器的永久代调优
6.2.3 增量式CMS垃圾收集
6.3 理解G1垃圾收集器
G1垃圾收集器调优
6.4 高级调优
6.4.1 晋升及Survivor空间
6.4.2 分配大对象
6.4.3 AggressiveHeap标志
6.4.4 全盘掌控堆空间的大小
6.5 小结
第 7 章 堆内存最佳实践
7.1 堆分析
7.1.1 堆直方图
7.1.2 堆转储
7.1.3 内存溢出错误
7.2 减少内存使用
7.2.1 减少对象大小
7.2.2 延迟初始化
7.2.3 不可变对象和标准化对象
7.2.4 字符串的保留
7.3 对象生命周期管理
7.3.1 对象重用
7.3.2 弱引用、软引用与其他引用
7.4 小结
第 8 章 原生内存最佳实践
8.1 内存占用
8.1.1 测量内存占用
8.1.2 内存占用最小化
8.1.3 原生NIO缓冲区
8.1.4 原生内存跟踪
8.2 针对不同操作系统优化JVM
8.2.1 大页
8.2.2 压缩的oop
8.3 小结
第 9 章 线程与同步的性能
9.1 线程池与ThreadPoolExecutor
9.1.1 设置最大线程数
9.1.2 设置最小线程数
9.1.3 线程池任务大小
9.1.4 设置ThreadPoolExecutor的大小
9.2 ForkJoinPool
自动并行化
9.3 线程同步
9.3.1 同步的代价
9.3.2 避免同步
9.3.3 伪共享
9.4 JVM线程调优
9.4.1 调节线程栈大小
9.4.2 偏向锁
9.4.3 自旋锁
9.4.4 线程优先级
9.5 监控线程与锁
9.5.1 查看线程
9.5.2 查看阻塞线程
9.6 小结
第 10 章 Java EE 性能调优
10.1 Web容器的基本性能
HTTP会话状态
10.2 线程池
10.3 EJB会话Bean
10.3.1 调优EJB对象池
10.3.2 调优EJB缓存
10.3.3 本地和远程实例
10.4 XML和JSON处理
10.4.1 数据大小
10.4.2 解析和编组概述
10.4.3 选择解析器
10.4.4 XML验证
10.4.5 文档模型
10.4.6 Java对象模型
10.5 对象序列化
10.5.1 transient字段
10.5.2 覆盖默认的序列化
10.5.3 压缩序列化数据
10.5.4 追踪对象复制
10.6 Java EE网络API
调整传输数据的大小
10.7 小结
第 11 章 数据库性能的最佳实践
11.1 JDBC
11.1.1 JDBC驱动程序
11.1.2 预处理语句和语句池
11.1.3 JDBC连接池
11.1.4 事务
11.1.5 结果集的处理
11.2 JPA
11.2.1 事务处理
11.2.2 对JPA的写性能进行优化
11.2.3 对JPA的读性能进行优化
11.2.4 JPA缓存
11.2.5 JPA的只读实体
11.3 小结
第 12 章 Java SE API 技巧
12.1 缓冲式I/O
12.2 类加载
12.3 随机数
12.4 Java原生接口
12.5 异常
12.6 字符串的性能
12.7 日志
12.8 Java集合类API
12.8.1 同步还是非同步
12.8.2 设定集合的大小
12.8.3 集合与内存使用效率
12.9 AggressiveOpts标志
12.9.1 替代实现
12.9.2 其他标志
12.10 Lambda表达式和匿名类
Lambda表达式与匿名类加载
12.11 流和过滤器的性能
延迟遍历(Lazy Traversal)
12.12 小结
附录 A 性能调优标志摘要
作者简介
您当前的等级为
登录后免费下载登录
小黑屋反思中,不准下载!
评论后刷新页面下载评论
支付¥以后下载
请先登录
您今天的下载次数(次)用完了,请明天再来
支付积分以后下载立即支付
支付以后下载立即支付
您当前的用户组不允许下载升级会员
您已获得下载权限
您可以每天下载资源次,今日剩余次
免责申明:
1. 本站分享的所有书籍均来源于自互联网,我们只进行收集整理,并不对书籍内容进行更改。
2. 部分书籍中可能有书籍压制者放置的广告,这并不是本站所为,请注意甄别。
3. 我们分享这些书籍,纯粹是出于知识分享的热情,以及对互联网分享精神的高度认同和践行,不以盈利为目的。
4. 本站分享的所有书籍,仅供个人学习研究使用,请勿用于任何商业用途,否则产生的一切法律纠纷与本站无关。
5. 如果这些书籍让你有所收获,在条件允许的情况下,请一定购买正版书籍,这是对创作者最好的支持。
6. 如果您是此书籍的版权所有者,且您不希望此作品出现在本站,请联系我们,我们将在收到您的请求后48小时内予以删除。