此部分為隱藏內(nèi)容,請輸入驗證碼后查看
掃描右側(cè)圖片或微信搜索 “ Java技術(shù)分享屋
” ,回復(fù) “ 驗證碼
” ,獲取驗證密碼。
本資料僅供讀者預(yù)覽及學(xué)習(xí)交流使用,不能用于商業(yè)用途,請在下載后24小時內(nèi)刪除。如果喜歡,請購買正版!
一.資料截圖
二.資料介紹
市面上介紹Java的書有很多,但專注于Java性能的并不多,能游刃有余地展示Java性能優(yōu)化難點的更是鳳毛麟角,本書即是其中之一。通過使用JVM和Java平臺,以及Java語言和應(yīng)用程序接口,本書詳盡講解了Java性能調(diào)優(yōu)的相關(guān)知識,幫助讀者深入理解Java平臺性能的各個方面,最終使程序如虎添翼。
通過閱讀本書,你可以:
運用四個基本原則最大程度地提升性能測試的效果
使用JDK中自帶的工具收集Java應(yīng)用的性能數(shù)據(jù)
理解JIT編譯器的優(yōu)缺點
調(diào)優(yōu)JVM垃圾收集器以減少對程序的影響
學(xué)習(xí)管理堆內(nèi)存和JVM原生內(nèi)存的方法
了解如何最大程度地優(yōu)化Java線程及同步的性能
解決Java EE和Java SE應(yīng)用程序接口的性能問題
改善Java驅(qū)動的數(shù)據(jù)庫應(yīng)用程序的性能
三.資料目錄
推薦序 xi
前言 xii
第1章 導(dǎo)論 1
1.1 概述 2
1.2 平臺版本約定 2
1.3 全面的性能調(diào)優(yōu) 4
1.3.1 編寫更好的算法 4
1.3.2 編寫更少的代碼 4
1.3.3 老調(diào)重彈的過早優(yōu)化 5
1.3.4 其他:數(shù)據(jù)庫很可能就是瓶頸 6
1.3.5 常見的優(yōu)化 7
1.4 小結(jié) 8
第2章 性能測試方法 9
2.1 原則1:測試真實應(yīng)用 9
2.1.1 微基準(zhǔn)測試 9
2.1.2 宏基準(zhǔn)測試 13
2.1.3 介基準(zhǔn)測試 15
2.1.4 代碼示例 16
2.2 原則2:理解批處理流逝時間、吞吐量和響應(yīng)時間 19
2.2.1 批處理流逝時間 19
2.2.2 吞吐量測試 20
2.2.3 響應(yīng)時間測試 20
2.3 原則3:用統(tǒng)計方法應(yīng)對性能的變化 23
2.4 原則4:盡早頻繁測試 26
2.5 小結(jié) 28
第3章 Java性能調(diào)優(yōu)工具箱 29
3.1 操作系統(tǒng)的工具和分析 29
3.1.1 CPU使用率 29
3.1.2 CPU運行隊列 32
3.1.3 磁盤使用率 33
3.1.4 網(wǎng)絡(luò)使用率 34
3.2 Java監(jiān)控工具 35
3.2.1 基本的VM信息 36
3.2.2 線程信息 39
3.2.3 類信息 39
3.2.4 實時GC分析 39
3.2.5 事后堆轉(zhuǎn)儲 39
3.3 性能分析工具 39
3.3.1 采樣分析器 40
3.3.2 探查分析器 41
3.3.3 阻塞方法和線程時間線 42
3.3.4 本地分析器 44
3.4 Java任務(wù)控制 45
3.4.1 Java飛行記錄器 46
3.4.2 開啟JFR 52
3.4.3 選擇JFR 事件 54
3.5 小結(jié) 56
第4章 JIT編譯器 58
4.1 JIT編譯器:概覽 58
4.2 調(diào)優(yōu)入門:選擇編譯器類型(Client、Server或二者同用) 61
4.2.1 優(yōu)化啟動 62
4.2.2 優(yōu)化批處理 63
4.2.3 優(yōu)化長時間運行的應(yīng)用 64
4.3 Java和JIT編譯器版本 64
4.4 編譯器中級調(diào)優(yōu) 67
4.4.1 調(diào)優(yōu)代碼緩存 67
4.4.2 編譯閾值 68
4.4.3 檢測編譯過程 70
4.5 高級編譯器調(diào)優(yōu) 73
4.5.1 編譯線程 73
4.5.2 內(nèi)聯(lián) 74
4.5.3 逃逸分析 75
4.6 逆優(yōu)化 76
4.6.1 代碼被丟棄 77
4.6.2 逆優(yōu)化僵尸代碼 78
4.7 分層編譯級別 79
4.8 小結(jié) 80
第5章 垃圾收集入門 81
5.1 垃圾收集概述 81
5.1.1 分代垃圾收集器 83
5.1.2 GC算法 84
5.1.3 選擇GC算法 87
5.2 GC調(diào)優(yōu)基礎(chǔ) 92
5.2.1 調(diào)整堆的大小 92
5.2.2 代空間的調(diào)整 95
5.2.3 永久代和元空間的調(diào)整 96
5.2.4 控制并發(fā) 97
5.2.5 自適應(yīng)調(diào)整 98
5.3 垃圾回收工具 99
5.4 小結(jié) 102
第6章 垃圾收集算法 103
6.1 理解Throughput收集器 103
6.2 理解CMS收集器 109
6.2.1 針對并發(fā)模式失效的調(diào)優(yōu) 113
6.2.2 CMS收集器的永久代調(diào)優(yōu) 116
6.2.3 增量式CMS垃圾收集 117
6.3 理解G1垃圾收集器 118
6.4 高級調(diào)優(yōu) 126
6.4.1 晉升及Survivor空間 126
6.4.2 分配大對象 129
6.4.3 AggressiveHeap標(biāo)志 136
6.4.4 全盤掌控堆空間的大小 137
6.5 小結(jié) 138
第7章 堆內(nèi)存最佳實踐 140
7.1 堆分析 140
7.1.1 堆直方圖 141
7.1.2 堆轉(zhuǎn)儲 142
7.1.3 內(nèi)存溢出錯誤 146
7.2 減少內(nèi)存使用 149
7.2.1 減少對象大小 149
7.2.2 延遲初始化 152
7.2.3 不可變對象和標(biāo)準(zhǔn)化對象 156
7.2.4 字符串的保留 157
7.3 對象生命周期管理 160
7.3.1 對象重用 160
7.3.2 弱引用、軟引用與其他引用 165
7.4 小結(jié) 175
第8章 原生內(nèi)存最佳實踐 176
8.1 內(nèi)存占用 176
8.1.1 測量內(nèi)存占用 177
8.1.2 內(nèi)存占用最小化 178
8.1.3 原生NIO緩沖區(qū) 178
8.1.4 原生內(nèi)存跟蹤 179
8.2 針對不同操作系統(tǒng)優(yōu)化JVM 182
8.2.1 大頁 182
8.2.2 壓縮的oop 185
8.3 小結(jié) 187
第9章 線程與同步的性能 188
9.1 線程池與ThreadPoolExecutor 188
9.1.1 設(shè)置最大線程數(shù) 189
9.1.2 設(shè)置最小線程數(shù) 192
9.1.3 線程池任務(wù)大小 193
9.1.4 設(shè)置ThreadPoolExecutor的大小 193
9.2 ForkJoinPool 195
9.3 線程同步 201
9.3.1 同步的代價 202
9.3.2 避免同步 205
9.3.3 偽共享 208
9.4 JVM線程調(diào)優(yōu) 211
9.4.1 調(diào)節(jié)線程棧大小 211
9.4.2 偏向鎖 212
9.4.3 自旋鎖 212
9.4.4 線程優(yōu)先級 213
9.5 監(jiān)控線程與鎖 213
9.5.1 查看線程 214
9.5.2 查看阻塞線程 214
9.6 小結(jié) 217
第10章 Java EE 性能調(diào)優(yōu) 218
10.1 Web容器的基本性能 218
10.2 線程池 222
10.3 EJB會話Bean 223
10.3.1 調(diào)優(yōu)EJB對象池 223
10.3.2 調(diào)優(yōu)EJB緩存 225
10.3.3 本地和遠程實例 226
10.4 XML和JSON處理 227
10.4.1 數(shù)據(jù)大小 227
10.4.2 解析和編組概述 229
10.4.3 選擇解析器 230
10.4.4 XML驗證 235
10.4.5 文檔模型 237
10.4.6 Java對象模型 240
10.5 對象序列化 241
10.5.1 transient字段 241
10.5.2 覆蓋默認的序列化 241
10.5.3 壓縮序列化數(shù)據(jù) 244
10.5.4 追蹤對象復(fù)制 246
10.6 Java EE網(wǎng)絡(luò)API 248
10.7 小結(jié) 250
第11章 數(shù)據(jù)庫性能的最佳實踐 251
11.1 JDBC 251
11.1.1 JDBC驅(qū)動程序 252
11.1.2 預(yù)處理語句和語句池 253
11.1.3 JDBC連接池 255
11.1.4 事務(wù) 256
11.1.5 結(jié)果集的處理 262
11.2 JPA 264
11.2.1 事務(wù)處理 264
11.2.2 對JPA的寫性能進行優(yōu)化 267
11.2.3 對JPA的讀性能進行優(yōu)化 268
11.2.4 JPA緩存 271
11.2.5 JPA的只讀實體 276
11.3 小結(jié) 277
第12章 Java SE API技巧 278
12.1 緩沖式I/O 278
12.2 類加載 280
12.3 隨機數(shù) 284
12.4 Java原生接口 285
12.5 異?! ?87
12.6 字符串的性能 290
12.7 日志 291
12.8 Java集合類API 292
12.8.1 同步還是非同步 293
12.8.2 設(shè)定集合的大小 294
12.8.3 集合與內(nèi)存使用效率 295
12.9 AggressiveOpts標(biāo)志 296
12.9.1 替代實現(xiàn) 296
12.9.2 其他標(biāo)志 297
12.10 Lambda表達式和匿名類 297
12.11 流和過濾器的性能 300
12.12 小結(jié) 302
附錄A 性能調(diào)優(yōu)標(biāo)志摘要 303
作者簡介 312
關(guān)于封面 312
四.資料評價
《Java性能權(quán)威指南》是一本專注于Java性能調(diào)優(yōu)和優(yōu)化的書籍。該書通過詳細介紹Java程序的運行原理和性能優(yōu)化技術(shù),幫助讀者了解和解決Java應(yīng)用中的性能問題。
這本書的優(yōu)點包括:
全面的內(nèi)容:書中從Java虛擬機(JVM)的內(nèi)部機制、垃圾回收器、并發(fā)編程、I/O操作等方面進行了深入的探討,包含了多個關(guān)鍵性能優(yōu)化技術(shù)和建議。
實踐案例:書中提供了大量的實際案例和經(jīng)驗分享,通過真實場景的示例,讀者可以更好地理解和應(yīng)用性能優(yōu)化技術(shù)。
作者專業(yè)經(jīng)驗豐富:該書的作者是一位在Java性能領(lǐng)域有多年經(jīng)驗的專業(yè)人士,對Java的內(nèi)部機制和性能調(diào)優(yōu)有深入的了解,給出的建議和技巧都是經(jīng)過實踐驗證的。
雖然該書的內(nèi)容詳盡且深入,但由于Java技術(shù)的不斷發(fā)展和變化,書中部分內(nèi)容可能已經(jīng)過時。因此,讀者在閱讀時需要結(jié)合最新的Java開發(fā)技術(shù)和最新的JVM版本進行理解和應(yīng)用。
總的來說,《Java性能權(quán)威指南》是一本非常有價值的書籍,特別適合Java開發(fā)人員、系統(tǒng)架構(gòu)師和性能調(diào)優(yōu)工程師參考和學(xué)習(xí),幫助他們提高Java應(yīng)用的性能和可伸縮性。
五.作者簡介
Scott Oaks是Oracle公司的一位架構(gòu)師,專注研究Oracle中間件軟件的性能。加入Oracle之前,他曾于Sun Microsystem公司任職多年,在多個技術(shù)領(lǐng)域都有建樹,包括SunOS的內(nèi)核、網(wǎng)絡(luò)程序設(shè)計、Windows系統(tǒng)的遠程方法調(diào)用(RPC)以及 OPEN LOOK虛擬窗口管理器。1996年,Scott成為Sun公司的Java布道師,并于2001年加入Sun公司的Java性能小組——從那時起他就一直專注于Java的性能提升。此外,Scott也在O'Reilly出版社出版了多部書籍,包括Java Security、Java Threads、JXTA in a Nutshell和Jini in a Nutshell。