#目录
- 1 起步
- 2 自适应代码生成
- 3 自适应内存管理
- 4 线程与同步
- 5 基准测试与性能调优
- 5.1 为何要进行基准测试
- 5.2 如何构建基准测试
- [5.2.1 "置身事外(outside the system)"][167]
- [5.2.2 测量时间][168]
- [5.2.3 微基准测试(micro benchmark)][169]
- [5.2.3.1 基准测试与栈上替换][170]
- [5.2.3.2 基准测试与启动时间][171]
- [5.2.4 测试前要热身][172]
- [5.3 确定测试目标][173]
- [5.3.1 吞吐量][174]
- [5.3.2 兼顾吞吐量、响应时间和延迟][175]
- [5.3.3 伸缩性][176]
- [5.3.4 能源消耗][177]
- [5.3.5 其他方面][178]
- [5.4 工业级基准测试][179]
- [5.4.1 SPEC基准测试套件][180]
- [5.4.1.1 SPECjvm基准测试套件][181]
- [5.4.1.2 SPECjAppServer套件/SPECjEnterprise2010套件][182]
- [5.4.1.3 SPECjbb套件][183]
- [5.4.2 SipStone基准测试][184]
- [5.4.3 DaCapo基准测试][185]
- [5.4.4 真实场景下的应用程序][186]
- [5.4.1 SPEC基准测试套件][180]
- [5.5 基准测试的潜在风险][187]
- [5.6 性能调优][188]
- [5.6.1 非规范化行为(Out of the box behavior)][189]
- [5.6.2 调优目标][190]
- [5.6.2.1 内存管理调优][191]
- [5.6.2.2 代码生成调优][192]
- [5.6.2.3 锁与线程调优][193]
- [5.6.2.4 其他相关调优][194]
- [5.7 常见性能瓶颈与规避方法][195]
- [5.7.1 命令行参数
–XXaggressive
][196] - [5.7.2 析构函数][197]
- [5.7.3 引用对象][198]
- [5.7.4 对象池][199]
- [5.7.5 算法与数据结构][200]
- [5.7.5.1 典型问题][201]
- [5.7.5.2 意料之外的性质][202]
- [5.7.6 误用
System.gc()
][203] - [5.7.7 线程数太多][204]
- [5.7.8 锁竞争导致性能瓶颈][205]
- [5.7.9 不必要的异常][206]
- [5.7.10 大对象][207]
- [5.7.11 本地内存 vs. 堆内存][208]
- [5.7.1 命令行参数
- [5.8
wait/notify
方法与胖锁][209]- [5.8.1 堆的大小设置不当][210]
- [5.8.2 存活对象过多][211]
- [5.8.3 Java并非银弹][212]
- [5.9 小结][213]
- [6 JRockit Mission Control][214]
- [6.1 相关背景][215]
- [6.1.1 采样分析 vs. 准确分析][216]
- [6.1.2 用途广泛][217]
- [6.2 概述][218]
- [6.2.1 JRockit Mission Control的服务器端组件][219]
- [6.2.2 JRockit Mission Control的客户端组件][220]
- [6.2.3 术语介绍][221]
- [6.2.4 单独运行JRockit Mission Control][222]
- [6.2.5 在Eclipse中运行JRockit Mission Control][223]
- [6.2.6 远程管理JRockit][224]
- [6.2.6.1 JRockit发现协议(JRockit Discovery Protocol)][225]
- [6.2.7 安全限制][226]
- [6.3 处理连接问题][227]
- [6.3.1 主机名解析失败的问题][228]
- [6.4 Experimental Update Site][229]
- [6.5 调试JRockit Mission Control][230]
- [6.6 小结][231]
- [6.1 相关背景][215]
[167]: ./chap5/5.2.md#5.2.1 "5.2.1 "置身事外(outside the system)""
[168]: ./chap5/5.2.md#5.2.2 "5.2.2 测量时间"
[169]: ./chap5/5.2.md#5.2.3 "5.2.3 微基准测试(micro benchmark)"
[170]: ./chap5/5.2.md#5.2.3.1 "5.2.3.1 基准测试与栈上替换"
[171]: ./chap5/5.2.md#5.2.3.2 "5.2.3.2 基准测试与启动时间"
[172]: ./chap5/5.2.md#5.2.4 "5.2.4 测试前要热身"
[173]: ./chap5/5.3.md#5.3 "5.3 确定测试目标"
[174]: ./chap5/5.3.md#5.3.1 "5.3.1 吞吐量"
[175]: ./chap5/5.3.md#5.3.2 "5.3.2 兼顾吞吐量、响应时间和延迟"
[176]: ./chap5/5.3.md#5.3.3 "5.3.3 伸缩性"
[177]: ./chap5/5.3.md#5.3.4 "5.3.4 能源消耗"
[178]: ./chap5/5.3.md#5.3.5 "5.3.5 其他方面"
[179]: ./chap5/5.4.md#5.4 "5.4 工业级基准测试"
[180]: ./chap5/5.4.md#5.4.1 "5.4.1 SPEC基准测试套件"
[181]: ./chap5/5.4.md#5.4.1.1 "5.4.1.1 SPECjvm基准测试套件"
[182]: ./chap5/5.4.md#5.4.1.2 "5.4.1.2 SPECjAppServer套件/SPECjEnterprise2010套件"
[183]: ./chap5/5.4.md#5.4.1.3 "5.4.1.3 SPECjbb套件"
[184]: ./chap5/5.4.md#5.4.2 "5.4.2 SipStone基准测试"
[185]: ./chap5/5.4.md#5.4.3 "5.4.3 DaCapo基准测试"
[186]: ./chap5/5.4.md#5.4.4 "5.4.4 真实场景下的应用程序"
[187]: ./chap5/5.5.md#5.5 "5.5 基准测试的潜在风险"
[188]: ./chap5/5.6.md#5.6 "5.6 性能调优"
[189]: ./chap5/5.6.md#5.6.1 "5.6.1 非规范化行为(Out of the box behavior)"
[190]: ./chap5/5.6.md#5.6.2 "5.6.2 调优目标"
[191]: ./chap5/5.6.md#5.6.2.1 "5.6.2.1 内存管理调优"
[192]: ./chap5/5.6.md#5.6.2.2 "5.6.2.2 代码生成调优"
[193]: ./chap5/5.6.md#5.6.2.3 "5.6.2.3 锁与线程调优"
[194]: ./chap5/5.6.md#5.6.2.4 "5.6.2.4 其他相关调优"
[195]: ./chap5/5.7.md#5.7 "5.7 常见性能瓶颈与规避方法"
[196]: ./chap5/5.7.md#5.7.1 "5.7.1 命令行参数–XXaggressive
"
[197]: ./chap5/5.7.md#5.7.2 "5.7.2 析构函数"
[198]: ./chap5/5.7.md#5.7.3 "5.7.3 引用对象"
[199]: ./chap5/5.7.md#5.7.4 "5.7.4 对象池"
[200]: ./chap5/5.7.md#5.7.5 "5.7.5 算法与数据结构"
[201]: ./chap5/5.7.md#5.7.5.1 "5.7.5.1 典型问题"
[202]: ./chap5/5.7.md#5.7.5.2 "5.7.5.2 意料之外的性质"
[203]: ./chap5/5.7.md#5.7.6 "5.7.6 误用System.gc()
"
[204]: ./chap5/5.7.md#5.7.7 "5.7.7 线程数太多"
[205]: ./chap5/5.7.md#5.7.8 "5.7.8 锁竞争导致性能瓶颈"
[206]: ./chap5/5.7.md#5.7.9 "5.7.9 不必要的异常"
[207]: ./chap5/5.7.md#5.7.10 "5.7.10 大对象"
[208]: ./chap5/5.7.md#5.7.11 "5.7.11 本地内存 vs. 堆内存"
[209]: ./chap5/5.8.md#5.8 "5.8 wait/notify
方法与胖锁"
[210]: ./chap5/5.8.md#5.8.1 "5.8.1 堆的大小设置不当"
[211]: ./chap5/5.8.md#5.8.2 "5.8.2 存活对象过多"
[212]: ./chap5/5.8.md#5.8.3 "5.8.3 Java并非银弹"
[213]: ./chap5/5.9.md#5.9 "5.9 小结"
[214]: ./chap6/6.md#6 "6 JRockit Mission Control"
[215]: ./chap6/6.1.md#6.1 "6.1 相关背景"
[216]: ./chap6/6.1.md#6.1.1 "6.1.1 采样分析 vs. 准确分析"
[217]: ./chap6/6.1.md#6.1.2 "6.1.2 用途广泛"
[218]: ./chap6/6.2.md#6.2 "6.2 概述"
[219]: ./chap6/6.2.md#6.2.1 "6.2.1 JRockit Mission Control的服务器端组件"
[220]: ./chap6/6.2.md#6.2.2 "6.2.2 JRockit Mission Control的客户端组件"
[221]: ./chap6/6.2.md#6.2.3 "6.2.3 术语介绍"
[222]: ./chap6/6.2.md#6.2.4 "6.2.4 单独运行JRockit Mission Control"
[223]: ./chap6/6.2.md#6.2.5 "6.2.5 在Eclipse中运行JRockit Mission Control"
[224]: ./chap6/6.2.md#6.2.6 "6.2.6 远程管理JRockit"
[225]: ./chap6/6.2.md#6.2.6.1 "6.2.6.1 JRockit发现协议(JRockit Discovery Protocol)"
[226]: ./chap6/6.2.md#6.2.7 "6.2.7 安全限制"
[227]: ./chap6/6.3.md#6.3 "6.3 处理连接问题"
[228]: ./chap6/6.3.md#6.3.1 "6.3.1 主机名解析失败的问题"
[229]: ./chap6/6.4.md#6.4 "6.4 Experimental Update Site"
[230]: ./chap6/6.5.md#6.5 "6.5 调试JRockit Mission Control"
[231]: ./chap6.6.6.md#6.6 "6.6 小结"