《Java性能優化權威指南》

《Java性能優化權威指南》java

基本信息linux

原書名:Java performancec++

原出版社: Addison-Wesley Professional程序員

做者: (美)Charlie Hunt    Binu John   web

譯者: 柳飛 陸明剛數據庫

叢書名: 圖靈程序設計叢書編程

出版社:人民郵電出版社windows

ISBN:9787115342973api

上架時間:2014-2-18緩存

出版日期:2014 年3月

開本:16開

頁碼:525

版次:1-1

所屬分類:計算機 > 軟件與程序設計 > JAVA(J#) > Java

 

更多關於》》》《Java性能優化權威指南》

 

編輯推薦

     《Java性能優化權威指南》由曾任職於Oracle/Sun的性能優化專家編寫,系統而詳細地講解了性能優化的各個方面,幫助你學習Java虛擬機的基本原理、掌握一些監控Java程序性能的工具,從而快速找到程序中的性能瓶頸,並有效改善程序的運行性能。

   Java性能優化的任何問題,均可以從本書中找到答案!

 

內容簡介

    書籍

    計算機書籍

  《java性能優化權威指南》主要爲java se 和java ee 應用的性能調優提供建議。主要包括如下幾方面:性能監控、性能分析、java hotspot vm 調優、高效的基準測試以及java ee 應用的性能調優。

  《java性能優化權威指南》適合全部java 程序員、系統調優師和系統架構師閱讀。

 

媒體評論

  「本書是Java性能優化的聖經!若是你是一個細節控,那麼這本書正適合你。」

  ——James Gosling,Java之父

  「這本書未必是最暢銷的Java書,但確定是最具技術深度的。如何測試、分析和優化Java程序的性能是目前Java程序員最關心的技能,但要掌握這個技能,必需要有深刻到Java虛擬機甚至操做系統層面的知識和實踐經驗,在這個領域的書籍很少,好書更少,而這本書就能把複雜深奧的問題說得清楚明白,把理論的知識講得能夠實踐操做,無愧爲Java性能優化領域必讀的教材。」

  ——周志明,《深刻理解Java虛擬機:JVM高級特性與最佳實踐》做者

  「《Java性能優化權威指南》是Java應用性能優化的必備參考書。它由Oracle/Sun的性能優化專家編寫,系統而詳細地講解了性能優化的各個方面,從底層的操做系統及JVM的原理與監控工具,到性能測試技巧,再到上層應用框架優化。若是有Java性能優化的疑問,請先從本書開始尋找答案,不管新手老手都能從中收益。」

  ——莫樞,JVM開發工程師,Azul Systems

  「要對Java程序作性能優化,不只要對應用的代碼實現有足夠的瞭解,還須要對更底層的OS、JVM有較深的瞭解。這本書介紹了Java程序員也須要掌握的OS、JVM層面的不少知識,更吸引人的是這本書的做者結合本身的經驗,爲你們總結了一些性能優化的模式,例如CPU利用率高的時候須要怎麼進行優化,這些模式讓人受益不淺,相信讀事後能對你們平常工做中作性能優化提供不小的幫助。」

  ——林昊,阿里巴巴技術專家,http://hellojava.info

  「長期以來,一些人對Java存在一種偏見,認爲Java程序存在運行性能低下的缺點。本書由淺入深地介紹了對於Java程序進行性能優化的各類工具和方法,幫助你學習Java虛擬機的基本原理、掌握一些監控Java程序性能的工具,從而快速找到程序中的性能瓶頸,並有效改善程序的運行性能。讀過本書,人們將可以消除對Java程序性能的偏見,讓Java真正展示出強大魅力。」

  ——李凡希,阿里巴巴資深研發工程師

  「性能優化是一門很是實戰性的技術,本書正是這樣一本很是具備實戰指導意義的做品。該書涵蓋了Java應用、Web應用、EJB等若干不一樣場景下的性能分析、監控、優化的最佳實踐和工具,具備至關的廣度,同時該書也毫不是工具和數據的堆砌,書中對不少底層細節有着深刻和細緻的介紹和分析,好比GC、JIT等JVM的基本原理,都體現了做者的技術深度。通讀本書能讓你更好地理解Java,並洞察和解決潛在的性能問題。」

  ——鄒飛,Google資深軟件工程師、技術經理

 

 

目錄

《java性能優化權威指南》

第1章 策略、方法和方法論 1

1.1 性能問題的現狀 1

1.2 性能分析的兩種方法:自頂向下和自底向上 4

1.2.1 自頂向下 4

1.2.2 自底向上 5

1.3 選擇正確的平臺並評估系統性能 5

1.3.1 選擇正確的cpu架構 6

1.3.2 評估系統性能 7

1.4 參考資料 7

第2章 操做系統性能監控 8

2.1 定義 8

2.2 cpu使用率 9

2.2.1 監控cpu使用率:windows 9

2.2.2 監控cpu使用率:windows typeperf 12

2.2.3 監控cpu使用率:linux 13

2.2.4 監控cpu使用率:solaris 14

2.2.5 命令行監控cpu使用率:linux和solaris 16

2.3 cpu調度程序運行隊列 19

2.3.1 監控cpu調度程序運行隊列:windows 19

2.3.2 監控cpu調度程序運行隊列:solaris 21

2.3.3 監控cpu調度程序運行隊列:linux 21

2.4 內存使用率 22

2.4.1 監控內存利用率:windows 22

2.4.2 監控內存使用率:solaris 23

2.4.3 監控內存使用率:linux 24

2.4.4 監控鎖競爭:solaris 25

2.4.5 監控鎖競爭:linux 26

2.4.6 監控鎖競爭:windows 27

2.4.7 隔離競爭鎖 27

2.4.8 監控搶佔式上下文切換 27

2.4.9 監控線程遷移 28

2.5 網絡i/o使用率 28

2.5.1 監控網絡i/o使用率:solaris 29

2.5.2 監控網絡i/o使用率:linux 30

2.5.3 監控網絡i/o使用率:windows 30

2.5.4 應用性能改進的考慮 31

2.6 磁盤i/o使用率 31

2.7 其餘命令行工具 34

2.8 監控cpu使用率:sparc t系列系統 35

2.9 參考資料 36

第3章 jvm概覽 38

3.1 hotspot vm的基本架構 38

3.2 hotspot vm運行時 40

3.2.1 命令行選項 40

3.2.2 vm生命週期 41

3.2.3 vm類加載 44

3.2.4 字節碼驗證 46

3.2.5 類數據共享 47

3.2.6 解釋器 48

3.2.7 異常處理 49

3.2.8 同步 50

3.2.9 線程管理 51

3.2.10 c++堆管理 53

3.2.11 java本地接口 54

3.2.12 vm致命錯誤處理 55

3.3 hotspot vm垃圾收集器 56

3.3.1 分代垃圾收集 56

3.3.2 新生代 58

3.3.3 快速內存分配 60

3.3.4 垃圾收集器 60

3.3.5 serial收集器 61

3.3.6 parallel收集器:吞吐量爲先! 62

3.3.7 mostly-concurrent收集器:低延遲爲先! 62

3.3.8 garbage-first收集器:cms替代者 64

3.3.9 垃圾收集器比較 64

3.3.10 應用程序對垃圾收集器的影響 65

3.3.11 簡單回顧收集器歷史 65

3.4 hotspot vm jit編譯器 65

3.4.1 類型繼承關係分析 67

3.4.2 編譯策略 67

3.4.3 逆優化 68

3.4.4 client jit編譯器概覽 69

3.4.5 server jit編譯器概覽 69

3.4.6 靜態單賦值——程序依賴圖 69

3.4.7 將來加強展望 71

3.5 hotspot vm自適應調優 71

3.5.1 java 1.4.2的默認值 71

3.5.2 java 5自動優化的默認值 71

3.5.3 java 6 update 18更新後的默認優化值 73

3.5.4 自適應java堆調整 74

3.5.5 超越自動優化 75

3.6 參考資料 75

第4章 jvm性能監控 77

4.1 定義 77

4.2 垃圾收集 78

4.2.1 重要的垃圾收集數據 78

4.2.2 垃圾收集報告 78

4.2.3 垃圾收集數據的離線分析 86

4.2.4 圖形化工具 89

4.3 jit編譯器 103

4.4 類加載 104

4.5 java應用監控 106

4.6 參考資料 109

第5章 java應用性能分析 110

5.1 術語 111

5.1.1 通用性能分析術語 111

5.1.2 oracle solaris studio performance analyzer術語 112

5.1.3 netbeans profiler術語 112

5.2 oracle solaris studio performance analyzer 112

5.2.1 支持平臺 113

5.2.2 下載/安裝oracle solaris studio performance analyzer 114

5.2.3 使用oracle solaris studio performance analyzer 抓取性能數據 114

5.2.4 查看性能數據 118

5.2.5 數據表示 125

5.2.6 過濾性能數據 128

5.2.7 命令行工具er_print 129

5.3 netbeans profiler 135

5.3.1 支持平臺 136

5.3.2 下載安裝netbeans profiler 136

5.3.3 開始方法分析會話 137

5.3.4 controls子面板 143

5.3.5 status子面板 143

5.3.6 profiling results子面板 143

5.3.7 saved snapshots子面板 144

5.3.8 view子面板 144

5.3.9 basic telemetry子面板 144

5.3.10 查看動態結果 145

5.3.11 對結果進行快照 145

5.3.12 啓動內存分析會話 146

5.3.13 查看實時結果 148

5.3.14 對結果進行快照 150

5.3.15 定位內存泄漏 150

5.3.16 分析堆轉儲 151

5.4 參考資料 152

第6章 java應用性能分析技巧 153

6.1 性能優化機會 153

6.2 系統或內核態cpu使用 154

6.3 鎖競爭 161

6.4 volatile的使用 171

6.5 調整數據結構的大小 172

6.5.1 stringbuilder或stringbuffer大小的調整 172

6.5.2 java collection類大小調整 175

6.6 增長並行性 179

6.7 太高的cpu使用率 181

6.8 其餘有用的分析提示 182

6.9 參考資料 184

第7章 jvm性能調優入門 185

7.1 方法 185

7.1.1 假設條件 187

7.1.2 測試基礎設施需求 188

7.2 應用程序的系統需求 188

7.2.1 可用性 188

7.2.2 可管理性 188

7.2.3 吞吐量 189

7.2.4 延遲及響應性 189

7.2.5 內存佔用 189

7.2.6 啓動時間 189

7.3 對系統需求分級 190

7.4 選擇jvm部署模式 190

7.4.1 單jvm部署模式 190

7.4.2 多jvm部署模式 190

7.4.3 通用建議 191

7.5 選擇jvm運行模式 191

7.5.1 client模式或server模式 191

7.5.2 32位/64位 jvm 192

7.5.3 垃圾收集器 192

7.6 垃圾收集調優基礎 193

7.6.1 性能屬性 193

7.6.2 原則 193

7.6.3 命令行選項及gc日誌 194

7.7 肯定內存佔用 197

7.7.1 約束 197

7.7.2 hotspot vm堆的佈局 197

7.7.3 堆大小調優着眼點 200

7.7.4 計算活躍數據大小 201

7.7.5 初始堆空間大小配置 202

7.7.6 其餘考量因素 203

7.8 調優延遲/響應性 204

7.8.1 輸入 205

7.8.2 優化新生代的大小 205

7.8.3 優化老年代的大小 207

7.8.4 爲cms調優延遲 210

7.8.5 survivor空間介紹 212

7.8.6 解析晉升閾值 214

7.8.7 監控晉升閾值 215

7.8.8 調整survivor空間的容量 216

7.8.9 顯式的垃圾收集 222

7.8.10 併發永久代垃圾收集 223

7.8.11 調優cms停頓時間 224

7.8.12 下一步 225

7.9 應用程序吞吐量調優 225

7.9.1 cms吞吐量調優 225

7.9.2 throughput收集器調優 226

7.9.3 survivor空間調優 228

7.9.4 調優並行垃圾收集線程 231

7.9.5 在numa系統上部署 231

7.9.6 下一步 232

7.10 極端示例 232

7.11 其餘性能命令行選項 232

7.11.1 實驗性(最近最大)優化 232

7.11.2 逃逸分析 233

7.11.3 偏向鎖 233

7.11.4 大頁面支持 234

7.12 參考資料 236

第8章 java應用的基準測試 237

8.1 基準測試所面臨的挑戰 237

8.1.1 基準測試的預熱階段 238

8.1.2 垃圾收集 240

8.1.3 使用java time接口 240

8.1.4 剔除無效代碼 241

8.1.5 內聯 247

8.1.6 逆優化 251

8.1.7 建立微基準測試的注意事項 256

8.2 實驗設計 257

8.3 使用統計方法 258

8.3.1 計算均值 258

8.3.2 計算標準差 258

8.3.3 計算置信區間 259

8.3.4 使用假設測試 260

8.3.5 使用統計方法的注意事項 262

8.4 參考文獻 263

8.5 參考資料 263

第9章 多層應用的基準測試 264

9.1 基準測試難題 264

9.2 企業級應用基準測試的考量 266

9.2.1 定義被測系統 266

9.2.2 制定微基準測試 266

9.2.3 定義用戶交互模型 267

9.2.4 定義性能指標 270

9.2.5 擴展基準測試 273

9.2.6 用利特爾法則驗證 274

9.2.7 思考時間 275

9.2.8 擴展性分析 278

9.2.9 運行基準測試 278

9.3 應用服務器監控 281

9.3.1 glassfish監控 281

9.3.2 監控子系統 286

9.3.3 solaris 287

9.3.4 linux 288

9.3.5 windows 288

9.3.6 外部系統的性能 289

9.3.7 磁盤i/o 292

9.3.8 監控和調優資源池 293

9.4 企業級應用性能分析 294

9.5 參考資料 295

第10章 web應用的性能調優 297

10.1 web應用的基準測試 298

10.2 web容器的組件 298

10.2.1 http鏈接器 299

10.2.2 servlet引擎 300

10.3 web容器的監控和性能調優 300

10.3.1 容器的開發和生產模式 300

10.3.2 安全管理器 301

10.3.3 jvm調優 301

10.3.4 http服務和web容器 303

10.3.5 http監聽器 303

10.4 最佳實踐 315

10.4.1 servlet和jsp最佳實踐 315

10.4.2 內容緩存 324

10.4.3 會話持久化 328

10.4.4 http服務器文件緩存 329

10.5 參考資料 333

第11章 web service的性能 334

11.1 xml的性能 334

11.1.1 xml處理的生命週期 335

11.1.2 解析/解編組 335

11.1.3 訪問 338

11.1.4 修改 338

11.1.5 序列化/編組 339

11.2 驗證 339

11.3 解析外部實體 341

11.4 xml文檔的局部處理 343

11.5 選擇合適的api 346

11.6 jax-ws參考實現棧 349

11.7 web service基準測試 350

11.8 影響web service性能的因素 353

11.8.1 消息大小的影響 353

11.8.2 不一樣schema類型的性能特徵 355

11.8.3 終端服務器的實現 358

11.8.4 處理程序的性能 359

11.9 最佳性能實踐 361

11.9.1 二進制負載的處理 361

11.9.2 處理xml文檔 365

11.9.3 使用mtom發送xml文檔 365

11.9.4 使用provider接口 368

11.9.5 快速信息集 370

11.9.6 http壓縮 372

11.9.7 web service客戶端的性能 373

11.10 參考資料 374

第12章 java持久化及enterprise java bean的性能 375

12.1 ejb編程模型 376

12.2 java持久化api及其參考實現 376

12.3 監控及調優ejb容器 379

12.3.1 線程池 380

12.3.2 bean池和緩存 382

12.3.3 eclipselink會話緩存 385

12.4 事務隔離級 386

12.5 enterprise java bean的最佳實踐 387

12.5.1 簡要說明使用的ejb基準測試 387

12.5.2 ejb 2.1 388

12.5.3 ejb 3.0 400

12.6 java持久化最佳實踐 403

12.6.1 jpa查詢語言中的查詢 403

12.6.2 查詢結果緩存 405

12.6.3 fetchtype 406

12.6.4 鏈接池 408

12.6.5 批量更新 409

12.6.6 選擇正確的數據庫鎖策略 411

12.6.7 不帶事務的讀取 411

12.6.8 繼承 411

12.7 參考資料 412

附錄a 重要的hotspot vm選項 413

附錄b 性能分析技巧示例源代碼 429

b.1 鎖競爭實現1 429

b.2 鎖競爭實現2 439

b.3 鎖競爭實現3 449

b.4 鎖競爭實現4 459

b.5 鎖競爭實現5 469

b.6 調整容量變化1 481

b.7 調整容量變化2 492

b.8 增長併發性的單線程實現 504

b.9 增長併發性的多線程實現 514

 

本圖書信息來源:互動出版

相關文章
相關標籤/搜索