《Java性能優(yōu)化權(quán)威指南》是Java應(yīng)用性能調(diào)優(yōu)的圣經(jīng),內(nèi)容通俗易懂,介紹了大量的監(jiān)控和測量工具,涉及各種硬件架構(gòu)和操作系統(tǒng)。涵蓋了如何構(gòu)建實(shí)驗(yàn)、解釋結(jié)果以及如何采取行動等技巧。由曾任職于Oracle/Sun的性能優(yōu)化專家編寫,系統(tǒng)而詳細(xì)地講解了性能優(yōu)化的各個(gè)方面,幫助你學(xué)習(xí)Java虛擬機(jī)的基本原理、掌握一些監(jiān)控Java程序性能的工具,從而快速找到程序中的性能瓶頸,并有效改善程序的運(yùn)行性能。
java性能優(yōu)化權(quán)威指南目錄
第1章 策略、方法和方法論
1.1 性能問題的現(xiàn)狀
1.2 性能分析的兩種方法:自頂向下和自底向上
1.2.1 自頂向下
1.2.2 自底向上
1.3 選擇正確的平臺并評估系統(tǒng)性能
1.3.1 選擇正確的CPU架構(gòu)
1.3.2 評估系統(tǒng)性能
1.4 參考資料
第2章 操作系統(tǒng)性能監(jiān)控
2.1 定義
2.2 CPU使用率
2.2.1 監(jiān)控CPU使用率:Windows
2.2.2 監(jiān)控CPU使用率:Windows typeperf
2.2.3 監(jiān)控CPU使用率:Linux
2.2.4 監(jiān)控CPU使用率:Solaris
2.2.5 命令行監(jiān)控CPU使用率:Linux和Solaris
2.3 CPU調(diào)度程序運(yùn)行隊(duì)列
2.3.1 監(jiān)控CPU調(diào)度程序運(yùn)行隊(duì)列:Windows
2.3.2 監(jiān)控CPU調(diào)度程序運(yùn)行隊(duì)列:Solaris
2.3.3 監(jiān)控CPU調(diào)度程序運(yùn)行隊(duì)列:Linux
2.4 內(nèi)存使用率
2.4.1 監(jiān)控內(nèi)存利用率:Windows
2.4.2 監(jiān)控內(nèi)存使用率:Solaris
2.4.3 監(jiān)控內(nèi)存使用率:Linux
2.4.4 監(jiān)控鎖競爭:Solaris
2.4.5 監(jiān)控鎖競爭:Linux
2.4.6 監(jiān)控鎖競爭:Windows
2.4.7 隔離競爭鎖
2.4.8 監(jiān)控?fù)屨际缴舷挛那袚Q
2.4.9 監(jiān)控線程遷移
2.5 網(wǎng)絡(luò)I/O使用率
2.5.1 監(jiān)控網(wǎng)絡(luò)I/O使用率:Solaris
2.5.2 監(jiān)控網(wǎng)絡(luò)I/O使用率:Linux
2.5.3 監(jiān)控網(wǎng)絡(luò)I/O使用率:Windows
2.5.4 應(yīng)用性能改進(jìn)的考慮
2.6 磁盤I/O使用率
2.7 其他命令行工具
2.8 監(jiān)控CPU使用率:SPARC T系列系統(tǒng)
2.9 參考資料
第3章 JVM概覽
3.1 HotSpot VM的基本架構(gòu)
3.2 HotSpot VM運(yùn)行時(shí)
3.2.1 命令行選項(xiàng)
3.2.2 VM生命周期
3.2.3 VM類加載
3.2.4 字節(jié)碼驗(yàn)證
3.2.5 類數(shù)據(jù)共享
3.2.6 解釋器
3.2.7 異常處理
3.2.8 同步
3.2.9 線程管理
3.2.10 C++堆管理
3.2.11 Java本地接口
3.2.12 VM致命錯(cuò)誤處理
3.3 HotSpot VM垃圾收集器
3.3.1 分代垃圾收集
3.3.2 新生代
3.3.3 快速內(nèi)存分配
3.3.4 垃圾收集器
3.3.5 Serial收集器
3.3.6 Parallel收集器:吞吐量為先!
3.3.7 Mostly-Concurrent收集器:低延遲為先!
3.3.8 Garbage-First收集器:CMS替代者
3.3.9 垃圾收集器比較
3.3.10 應(yīng)用程序?qū)占鞯挠绊憽 ?br/> 3.3.11 簡單回顧收集器歷史
3.4 HotSpot VM JIT編譯器
3.4.1 類型繼承關(guān)系分析
3.4.2 編譯策略
3.4.3 逆優(yōu)化
3.4.4 Client JIT編譯器概覽
3.4.5 Server JIT編譯器概覽
3.4.6 靜態(tài)單賦值——程序依賴圖
3.4.7 未來增強(qiáng)展望
3.5 HotSpot VM自適應(yīng)調(diào)優(yōu)
3.5.1 Java 1.4.2的默認(rèn)值
3.5.2 Java 5自動優(yōu)化的默認(rèn)值
3.5.3 Java 6 Update 18更新后的默認(rèn)優(yōu)化值
3.5.4 自適應(yīng)Java堆調(diào)整
3.5.5 超越自動優(yōu)化
3.6 參考資料
第4章 JVM性能監(jiān)控
4.1 定義
4.2 垃圾收集
4.2.1 重要的垃圾收集數(shù)據(jù)
4.2.2 垃圾收集報(bào)告
4.2.3 垃圾收集數(shù)據(jù)的離線分析
4.2.4 圖形化工具
4.3 JIT編譯器
4.4 類加載
4.5 Java應(yīng)用監(jiān)控
4.6 參考資料
第5章 Java應(yīng)用性能分析
5.1 術(shù)語
5.1.1 通用性能分析術(shù)語
5.1.2 Oracle Solaris Studio Performance Analyzer術(shù)語
5.1.3 NetBeans Profiler術(shù)語
5.2 Oracle Solaris Studio Performance Analyzer
5.2.1 支持平臺
5.2.2 下載/安裝Oracle Solaris Studio Performance Analyzer
5.2.3 使用Oracle Solaris Studio Performance Analyzer 抓取性能數(shù)據(jù)
5.2.4 查看性能數(shù)據(jù)
5.2.5 數(shù)據(jù)表示
5.2.6 過濾性能數(shù)據(jù)
5.2.7 命令行工具er_print
5.3 NetBeans Profiler
5.3.1 支持平臺
5.3.2 下載安裝NetBeans Profiler
5.3.3 開始方法分析會話
5.3.4 Controls子面板
5.3.5 Status子面板
5.3.6 Profiling Results子面板
5.3.7 Saved Snapshots子面板
5.3.8 View子面板
5.3.9 Basic Telemetry子面板
5.3.10 查看動態(tài)結(jié)果
5.3.11 對結(jié)果進(jìn)行快照
5.3.12 啟動內(nèi)存分析會話
5.3.13 查看實(shí)時(shí)結(jié)果
5.3.14 對結(jié)果進(jìn)行快照
5.3.15 定位內(nèi)存泄漏
5.3.16 分析堆轉(zhuǎn)儲
5.4 參考資料
第6章 Java應(yīng)用性能分析技巧
6.1 性能優(yōu)化機(jī)會
6.2 系統(tǒng)或內(nèi)核態(tài)CPU使用
6.3 鎖競爭
6.4 Volatile的使用
6.5 調(diào)整數(shù)據(jù)結(jié)構(gòu)的大小
6.5.1 StringBuilder或StringBuffer大小的調(diào)整
6.5.2 Java Collection類大小調(diào)整
6.6 增加并行性
6.7 過高的CPU使用率
6.8 其他有用的分析提示
6.9 參考資料
第7章 JVM性能調(diào)優(yōu)入門
7.1 方法
7.1.1 假設(shè)條件
7.1.2 測試基礎(chǔ)設(shè)施需求
7.2 應(yīng)用程序的系統(tǒng)需求
7.2.1 可用性
7.2.2 可管理性
7.2.3 吞吐量
7.2.4 延遲及響應(yīng)性
7.2.5 內(nèi)存占用
7.2.6 啟動時(shí)間
7.3 對系統(tǒng)需求分級
7.4 選擇JVM部署模式
7.4.1 單JVM部署模式
7.4.2 多JVM部署模式
7.4.3 通用建議
7.5 選擇JVM運(yùn)行模式
7.5.1 Client模式或Server模式
7.5.2 32位/64位 JVM
7.5.3 垃圾收集器
7.6 垃圾收集調(diào)優(yōu)基礎(chǔ)
7.6.1 性能屬性
7.6.2 原則
7.6.3 命令行選項(xiàng)及GC日志
7.7 確定內(nèi)存占用
7.7.1 約束
7.7.2 HotSpot VM堆的布局
7.7.3 堆大小調(diào)優(yōu)著眼點(diǎn)
7.7.4 計(jì)算活躍數(shù)據(jù)大小
7.7.5 初始堆空間大小配置
7.7.6 其他考量因素
7.8 調(diào)優(yōu)延遲/響應(yīng)性
7.8.1 輸入
7.8.2 優(yōu)化新生代的大小
7.8.3 優(yōu)化老年代的大小
7.8.4 為CMS調(diào)優(yōu)延遲
7.8.5 Survivor空間介紹
7.8.6 解析晉升閾值
7.8.7 監(jiān)控晉升閾值
7.8.8 調(diào)整Survivor空間的容量
7.8.9 顯式的垃圾收集
7.8.10 并發(fā)永久代垃圾收集
7.8.11 調(diào)優(yōu)CMS停頓時(shí)間
7.8.12 下一步
7.9 應(yīng)用程序吞吐量調(diào)優(yōu)
7.9.1 CMS吞吐量調(diào)優(yōu)
7.9.2 Throughput收集器調(diào)優(yōu)
7.9.3 Survivor空間調(diào)優(yōu)
7.9.4 調(diào)優(yōu)并行垃圾收集線程
7.9.5 在NUMA系統(tǒng)上部署
7.9.6 下一步
7.10 極端示例
7.11 其他性能命令行選項(xiàng)
7.11.1 實(shí)驗(yàn)性(最近最大)優(yōu)化
7.11.2 逃逸分析
7.11.3 偏向鎖
7.11.4 大頁面支持
7.12 參考資料
第8章 Java應(yīng)用的基準(zhǔn)測試
8.1 基準(zhǔn)測試所面臨的挑戰(zhàn)
8.1.1 基準(zhǔn)測試的預(yù)熱階段
8.1.2 垃圾收集
8.1.3 使用Java Time接口
8.1.4 剔除無效代碼
8.1.5 內(nèi)聯(lián)
8.1.6 逆優(yōu)化
8.1.7 創(chuàng)建微基準(zhǔn)測試的注意事項(xiàng)
8.2 實(shí)驗(yàn)設(shè)計(jì)
8.3 使用統(tǒng)計(jì)方法
8.3.1 計(jì)算均值
8.3.2 計(jì)算標(biāo)準(zhǔn)差
8.3.3 計(jì)算置信區(qū)間
8.3.4 使用假設(shè)測試
8.3.5 使用統(tǒng)計(jì)方法的注意事項(xiàng)
8.4 參考文獻(xiàn)
8.5 參考資料
第9章 多層應(yīng)用的基準(zhǔn)測試
9.1 基準(zhǔn)測試難題
9.2 企業(yè)級應(yīng)用基準(zhǔn)測試的考量
9.2.1 定義被測系統(tǒng)
9.2.2 制定微基準(zhǔn)測試
9.2.3 定義用戶交互模型
9.2.4 定義性能指標(biāo)
9.2.5 擴(kuò)展基準(zhǔn)測試
9.2.6 用利特爾法則驗(yàn)證
9.2.7 思考時(shí)間
9.2.8 擴(kuò)展性分析
9.2.9 運(yùn)行基準(zhǔn)測試
9.3 應(yīng)用服務(wù)器監(jiān)控
9.3.1 GlassFish監(jiān)控
9.3.2 監(jiān)控子系統(tǒng)
9.3.3 Solaris
9.3.4 Linux
9.3.5 Windows
9.3.6 外部系統(tǒng)的性能
9.3.7 磁盤I/O
9.3.8 監(jiān)控和調(diào)優(yōu)資源池
9.4 企業(yè)級應(yīng)用性能分析
9.5 參考資料
第10章 Web應(yīng)用的性能調(diào)優(yōu)
10.1 Web應(yīng)用的基準(zhǔn)測試
10.2 Web容器的組件
10.2.1 HTTP連接器
10.2.2 Servlet引擎
10.3 Web容器的監(jiān)控和性能調(diào)優(yōu)
10.3.1 容器的開發(fā)和生產(chǎn)模式
10.3.2 安全管理器
10.3.3 JVM調(diào)優(yōu)
10.3.4 HTTP服務(wù)和Web容器
10.3.5 HTTP監(jiān)聽器
10.4 最佳實(shí)踐
10.4.1 Servlet和JSP最佳實(shí)踐
10.4.2 內(nèi)容緩存
10.4.3 會話持久化
10.4.4 HTTP服務(wù)器文件緩存
10.5 參考資料
第11章 Web Service的性能
11.1 XML的性能
11.1.1 XML處理的生命周期
11.1.2 解析/解編組
11.1.3 訪問
11.1.4 修改
11.1.5 序列化/編組
11.2 驗(yàn)證
11.3 解析外部實(shí)體
11.4 XML文檔的局部處理
11.5 選擇合適的API
11.6 JAX-WS參考實(shí)現(xiàn)!
11.7 Web Service基準(zhǔn)測試
11.8 影響Web Service性能的因素
11.8.1 消息大小的影響
11.8.2 不同Schema類型的性能特征
11.8.3 終端服務(wù)器的實(shí)現(xiàn)
11.8.4 處理程序的性能
11.9 最佳性能實(shí)踐
11.9.1 二進(jìn)制負(fù)載的處理
11.9.2 處理XML文檔
11.9.3 使用MTOM發(fā)送XML文檔
11.9.4 使用Provider接口
11.9.5 快速信息集
11.9.6 HTTP壓縮
11.9.7 Web Service客戶端的性能
11.10 參考資料
第12章 Java持久化及Enterprise Java Bean的性能
12.1 EJB編程模型
12.2 Java持久化API及其參考實(shí)現(xiàn)
12.3 監(jiān)控及調(diào)優(yōu)EJB容器
12.3.1 線程池
12.3.2 Bean池和緩存
12.3.3 EclipseLink會話緩存
12.4 事務(wù)隔離級
12.5 Enterprise Java Bean的最佳實(shí)踐
12.5.1 簡要說明使用的EJB基準(zhǔn)測試
12.5.2 EJB 2.1
12.5.3 EJB 3.0
12.6 Java持久化最佳實(shí)踐
12.6.1 JPA查詢語言中的查詢
12.6.2 查詢結(jié)果緩存
12.6.3 FetchType
12.6.4 連接池
12.6.5 批量更新
12.6.6 選擇正確的數(shù)據(jù)庫鎖策略
12.6.7 不帶事務(wù)的讀取
12.6.8 繼承
12.7 參考資料
附錄A 重要的HotSpot VM選項(xiàng)
附錄B 性能分析技巧示例源代碼
B.1 鎖競爭實(shí)現(xiàn)1
B.2 鎖競爭實(shí)現(xiàn)2
B.3 鎖競爭實(shí)現(xiàn)3
B.4 鎖競爭實(shí)現(xiàn)4
B.5 鎖競爭實(shí)現(xiàn)5
B.6 調(diào)整容量變化1
B.7 調(diào)整容量變化2
B.8 增加并發(fā)性的單線程實(shí)現(xiàn)
B.9 增加并發(fā)性的多線程實(shí)現(xiàn)
- PC官方版
- 安卓官方手機(jī)版
- IOS官方手機(jī)版