Java 性能調優指南 Java性能调优指南

查理·亨特 (Charlie Hunt), Monica Beckwith, Poonam Parhar, Bengt Rutisson

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

商品描述

本書主要展示瞭如何在當今先進的多核硬件和復雜的操作系統環境下,系統且主動地提高Java 性能。本書對Charlie Hunt 和Binu John 的經典圖書Java Performance 進行延伸,提供了兩個前所未有的、強大的Java 平臺創新細節:Garbage First(G1)垃圾收集器和HotSpot 虛擬機服務代理。閱讀本書,你就可以在任何情況下從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插件”。

Bengt Rutisson(斯德哥爾摩,瑞典)是一名Oracle的JVM工程師,他在HotSpot工程團隊工作。過去十年一直從事關於JVM裡的垃圾收集器的工作,他最初接觸的是JRockit VM,隨後六年使用HotSpot VM。Bengt是OpenJDK項目中的積極參與者,在特性、穩定性修復以及性能增強方面做出了許多貢獻。

目錄大綱

第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