Java 性能權威指南 (Java Performance: The Definitive Guide)

奧克斯 (Scott Oaks)

  • Java 性能權威指南 (Java Performance: The Definitive Guide)-preview-1
Java 性能權威指南 (Java Performance: The Definitive Guide)-preview-1

買這商品的人也買了...

商品描述

《Java性能權威指南》對Java7和Java8中影響性能的因素展開了全面深入的介紹,講解傳統上影響應用性能的JVM特徵,包括即時編譯器、垃圾收集、語言特徵等。內容包括:用G1垃圾收集器應用的吞吐量;使用Java飛行記錄器查看性能細節,而不必借助專業的分析工具;堆內存與原生內存實踐;線程與同步的性能,以及數據庫性能實踐等。

目錄大綱

推薦序
前言

第1章導論1 
1.1概述2 
1.2平台版本約定2 
1.3全面的性能調優4 
1.3.1編寫更好的算法4 
1.3.2編寫更少的代碼4 
1.3.3老調重彈的過早優化5 
1.3.4其他:數據庫很可能就是瓶頸6 
1.3.5常見的優化7 
1.4小結8 

第2章性能測試方法9 
2.1原則1:測試真實應用9 
2.1.1微基準測試9 
2.1.2宏基準測試13 
2.1.3介基準測試15 
2.1.4代碼示例16 
2.2原則2:理解批處理流逝時間、吞吐量和響應時間19 
2.2.1批處理流逝時間19 
2.2.2吞吐量測試20 
2.2.3響應時間測試20 
2.3原則3:用統計方法應對性能的變化23 
2.4原則4:儘早頻繁測試26 
2.5小結28 

第3章Java性能調優工具箱29 
3.1操作系統的工具和分析29 
3.1.1CPU使用率29 
3.1.2CPU運行隊列32 
3.1.3磁盤使用率33 
3.1.4網絡使用率34
3.2Java監控工具35 
3.2.1基本的VM信息36 
3.2.2線程信息39 
3.2.3類信息39 
3.2.4實時GC分析39 
3.2.5事後堆轉儲39 
3.3性能分析工具39 
3.3.1採樣分析器40 
3.3.2探查分析器41 
3.3.3阻塞方法和線程時間線42 
3.3.4本地分析器44 
3.4Java任務控制45 
3.4.1Java飛行記錄器46 
3.4.2開啟JFR52 
3.4.3選擇JFR事件54 
3.5小結56 

第4章JIT編譯器58 
4.1JIT編譯器:概覽58 
4.2調優入門:選擇編譯器類型(Client、Server或二者同用)61 
4.2.1優化啟動62 
4.2.2優化批處理63 
4.2.3優化長時間運行的應用64 
4.3Java和JIT編譯器版本64 
4.4編譯器中級調優67 
4.4.1調優代碼緩存67 
4.4.2編譯閾值68 
4.4.3檢測編譯過程70 
4.5高級編譯器調優73 
4.5.1編譯線程73 
4.5.2內聯74 
4.5.3逃逸分析75
4.6逆優化76 
4.6.1代碼被丟棄77 
4.6.2逆優化殭屍代碼78 
4.7分層編譯級別79 
4.8小結80 

第5章垃圾收集入門81 
5.1垃圾收集概述81 
5.1.1分代垃圾收集器83 
5.1 .2GC算法84 
5.1.3選擇GC算法87 
5.2GC調優基礎92 
5.2.1調整堆的大小92 
5.2.2代空間的調整95 
5.2.3永久代和元空間的調整96 
5.2.4控制並發97 
5.2.5自適應調整98 
5.3垃圾回收工具99 
5.4小結102
 
第6章垃圾收集算法103 
6.1理解Throughput收集器103 
6.2理解CMS收集器109 
6.2.1針對並發模式失效的調優113 
6.2.2CMS收集器的永久代調優116 
6.2.3增量式CMS垃圾收集117 
6.3理解G1垃圾收集器118 
6.4高級調優126 
6.4.1晉升及Survivor空間126 
6.4.2分配大對象129 
6.4.3AggressiveHeap標誌136 
6.4. 4全盤掌控堆空間的大小137 
6.5小結138

第7章堆內存*佳實踐140 
7.1堆分析140 
7.1.1堆直方圖141 
7.1.2堆轉儲142 
7.1.3內存溢出錯誤146 
7.2減少內存使用149 
7.2.1減少對像大小149 
7.2.2延遲初始化152 
7.2.3不可變對象和標準化對象156 
7.2.4字符串的保留157 
7.3對像生命週期管理160 
7.3.1對象重用160 
7.3.2弱引用、軟引用與其他引用165 
7.4小結175 

第8章原生內存*佳實踐176 
8.1內存佔用176 
8.1.1測量內存佔用177 
8.1.2內存佔用最小化178 
8.1.3原生NIO緩衝區178 
8.1.4原生內存跟踪179 
8.2針對不同操作系統優化JVM182 
8.2.1大頁182 
8.2.2壓縮的oop185 
8.3小結187 

第9章線程與同步的性能188 
9.1線程池與ThreadPoolExecutor188 
9.1.1設置最大線程數189 
9.1.2設置最小線程數192 
9.1.3線程池任務大小193 
9.1.4設置ThreadPoolExecutor的大小193
9.2ForkJoinPool195 
9.3線程同步201 
9.3.1同步的代價202 
9.3.2避免同步205 
9.3.3偽共享208 
9.4JVM線程調優211 
9.4.1調節線程棧大小211 
9.4.2偏向鎖212 
9.4.3自旋鎖212 
9.4.4線程優先級213 
9.5監控線程與鎖213 
9.5.1查看線程214 
9.5.2查看阻塞線程214 
9.6小結217 

第10章JavaEE性能調優218 
10.1Web容器的基本性能218 
10.2線程池222 
10.3EJB會話Bean223 
10.3.1調優EJB對像池223 
10.3.2調優EJB緩存225 
10.3.3本地和遠程實例226 
10.4XML和JSON處理227 
10.4.1數據大小227 
10.4.2解析和編組概述229 
10.4 .3選擇解析器230 
10.4.4XML驗證235 
10.4.5文檔模型237 
10.4.6Java對像模型240 
10.5對象序列化241 
10.5.1transient字段241
10.5.2覆蓋默認的序列化241 
10.5.3壓縮序列化數據244 
10.5.4追踪對象複製246 
10.6JavaEE網絡API248 
10.7小結250 

第11章數據庫性能的最佳實踐251 
11.1JDBC251 
11.1.1JDBC驅動程序252 
11.1 .2預處理語句和語句池253 
11.1.3JDBC連接池255 
11.1.4事務256 
11.1.5結果集的處理262 
11.2JPA264 
11.2.1事務處理264 
11.2.2對JPA的寫性能進行優化267 
11.2.3對JPA的讀性能進行優化268 
11.2.4JPA緩存271 
11.2.5JPA的只讀實體276 
11.3小結277 

第12章JavaSEAPI技巧278 
12.1緩衝式I/O278 
12.2類加載280 
12.3隨機數284 
12.4Java原生接口285 
12.5異常287 
12.6字符串的性能290 
12.7日誌291 
12.8Java集合類API292 
12.8.1同步還是非同步293 
12.8.2設定集合的大小294
12.8.3集合與內存使用效率295 
12.9AggressiveOpts標誌296 
12.9.1替代實現296 
12.9.2其他標誌297 
12.10Lambda表達式和匿名類297 
12.11流和過濾器的性能300 
12.12小結302 

附錄A性能調優標誌摘要303 
作者簡介312 
關於封面312