1. 程式人生 > >書籍-Java效能調優指南

書籍-Java效能調優指南

內容簡介
《Java效能調優指南》主要展示瞭如何在當今先進的多核硬體和複雜的作業系統環境下,系統且主動地提高Java效能。本書對Charlie Hunt 和Binu John的經典圖書《Java Performance》進行延伸,提供了兩個前所未有的、強大的Java平臺創新細節:Garbage First(G1)垃圾收集器和HotSpot虛擬機器服務代理。
閱讀《Java效能調優指南》,你可以在任何情況下從JDK8或9中發揮Java的最大效能。

作者簡介
Charlie Hunt(芝加哥,伊利諾伊州)目前是一名在Oracle主導各種Java SE和HotSpot VM專案的JVM工程師,他的首要關注點在維持吞吐量和延遲的同時減少記憶體佔用量。他也是JavaTM Performance 一書的第一作者。他是JavaOne大會的常任主持,並被公認為是Java超級明星。他同樣是很多會議的發言人,包括QCon、Velocity、GoTo和Dreamforce。Charlie之前為Oracle主導過各種Java SE和HotSpot VM專案,經歷過多個不同效能的崗位,包括在Salesforce.com擔任效能工程架構師,以及在Oracle和Sun Microsystems擔任HotSpot VM效能架構師。他在1998年寫下了他的第一個Java應用程式,在1999年作為Java高階架構師加入Sun Microsystems,從那以後一直對Java和JVM的效能抱有熱情。
Monica Beckwith是一位獨立的效能顧問,主要從事優化基於Java虛擬機器的服務級系統的客戶應用程式。她過去的工作經歷包括Oracle、Sun Microsystems和AMD。Monica曾經從事用Java HotSpot VM優化JIT編譯器、生成程式碼、JVM啟發式演算法,以及垃圾收集和垃圾收集器方面的工作。她是許多會議上的固定發言人並多次發表主題為垃圾收集、Java記憶體模型等的文章。Monica領導過Oracle的G1垃圾收集器效能團隊,並被人稱為JavaOne搖滾明星。
Poonam Parhar (聖克拉拉,加利福利亞州)現在是一名在Oracle的JVM支援工程師,她的主要工作職責是解決針對JRockit和HotSpot VM的客戶升級問題。她喜歡除錯和排除故障,並且一直關注著HotSpot VM適用性和可維護性的提升。她明確了HotSpot VM裡很多複雜的垃圾收集問題,並且為了能更方便進行故障排除和修復垃圾收集器相關的問題,她一直致力於提升除錯工具和產品可維護性。她為可適用性代理偵錯程式做出很多貢獻,併為它開發了一個VisualVM外掛。她在2011年的JavaOne會議上分享了“適用於SA 的VisualVM外掛”。為了幫助客戶和Java社群,她通過在

https://blogs.oracle.com/poonam/上維護部落格來分享自己的工作經驗和知識。
Bengt Rutisson(斯德哥爾摩,瑞典)是一名Oracle的JVM工程師,他在HotSpot工程團隊工作。過去十年一直從事關於JVM裡的垃圾收集器的工作,他最初接觸的是JRockit VM,隨後六年使用HotSpot VM。Bengt是OpenJDK專案中的積極參與者,在特性、穩定性修復以及效能增強方面做出了許多貢獻。

目錄
前言 VII
致謝 IX
作者介紹 XII
第1章 Garbage First綜述 1
術語 1
並行垃圾收集器 2
序列垃圾收集器 4
併發標記清除(CMS)垃圾收集器 5
收集器的概括總結 7
Garbage First(G1)垃圾收集器 8
G1設計 10
巨型(Humongous)物件 12
Full垃圾收集 12
併發週期 13
堆空間調整 13
引用 14

第2章 深入Garbage First垃圾收集器 15
背景 15
G1中的垃圾收集 16
年輕代 17
年輕代收集暫停 18
物件老化與老年代 19
巨型分割槽 19
混合收集 22
收集集合及其重要性 24
已記憶集合及其重要性 24
併發優化執行緒以及柵欄 28
G1 GC的併發標記 30
併發標記階段 34
初始標記 34
根分割槽掃描 34
併發標記 34
重新標記 36
清除 36
轉移失敗與Full收集 37
引用 38

第3章 Garbage First垃圾收集器效能優化 39
年輕代收集的各階段 39
所有並行活動的開始 41
外部根分割槽 42
已記憶集合和已處理緩衝區 42
已記憶集合總結 44
轉移和回收 47
終止 47
GC外部的並行活動 48
所有並行活動總結 48
所有序列活動的啟動 48
其他序列活動 49
年輕代調優 50
併發標記階段調優 52
混合垃圾收集階段回顧 54
混合垃圾收集階段調優 56
避免轉移失敗 59
引用處理 60
觀察引用處理 60
引用處理調優 62
引用 65

第4章 The Serviceability Agent 67
SA是什麼 67
為什麼要用SA 68
SA元件 68
JDK中的SA二進位制檔案 69
SA的JDK版本說明 69
SA如何獲得Hotspot虛擬機器的內部資料結構 70
SA版本對照 71
SA除錯工具 72
HSDB 72
HSDB工具 80
命令列Hotspot偵錯程式CLHSDB 100
其他工具 103
CoreDump和崩潰Dump檔案 109
除錯非本地生成的Core檔案 109
SA的共享庫問題 110
消除共享庫問題 110
SA的系統屬性 111
SA的環境變數 113
JDI實現 114
擴充套件SA工具 115
VisualVM的SA外掛 118
VisualVM中怎樣安裝SA外掛 119
SA外掛使用 119
SA外掛功能 120
用SA做故障分析 124
記憶體溢位錯誤分析 124
診斷語言層死鎖 132
事後分析Hotspot虛擬機器崩潰 137
附錄 虛擬機器命令列附加引數探祕 145
索引 155