商品簡介
作者簡介
目次
相關商品
商品簡介
《深入理解Java虛擬機:JVM高級特性與最佳實踐》第1版兩年內印刷近10次,4家網上書店的評論近4?000條,98%以上的評論全部為5星級的好評,是整個Java圖書領域公認的經典著作和超級暢銷書,繁體版在臺灣也十分受歡迎。第2版在第1版的基礎上做了很大的改進:根據最新的JDK 1.7對全書內容進行了全面的升級和補充;增加了大量處理各種常見JVM問題的技巧和最佳實踐;增加了若干與生產環境相結合的實戰案例;對第1版中的錯誤和不足之處的修正;等等。第2版不僅技術更新、內容更豐富,而且實戰性更強。《深入理解Java虛擬機:JVM高級特性與最佳實踐》共分為五大部分,圍繞內存管理、執行子系統、程序編譯與優化、高效併發等核心主題對JVM進行了全面而深入的分析,深刻揭示了JVM的工作原理。第一部分從宏觀的角度介紹了整個Java技術體系、Java和JVM的發展歷程、模塊化,以及JDK的編譯,這對理解本書後面內容有重要幫助。第二部分講解了JVM的自動內存管理,包括虛擬機內存區域的劃分原理以及各種內存溢出異常產生的原因;常見的垃圾收集算法以及垃圾收集器的特點和工作原理;常見虛擬機監控與故障處理工具的原理和使用方法。第三部分分析了虛擬機的執行子系統,包括類文件結構、虛擬機類加載機制、虛擬機字節碼執行引擎。第四部分講解了程序的編譯與代碼的優化,闡述了泛型、自動裝箱拆箱、條件編譯等語法糖的原理;講解了虛擬機的熱點探測方法、HotSpot的即時編譯器、編譯觸發條件,以及如何從虛擬機外部觀察和分析JIT編譯的數據和結果;第五部分探討了Java實現高效併發的原理,包括JVM內存模型的結構和操作;原子性、可見性和有序性在Java內存模型中的體現;先行發生原則的規則和使用;線程在Java語言中的實現原理;虛擬機實現高效併發所做的一系列鎖優化措施。
作者簡介
周志明,資深Java技術專家,對JavaEE企業級應用開發、OSGi、Java虛擬機和工作流等都有深入的研究,並在大量的實踐中積累了豐富的經驗。尤其精通Java虛擬機,撰寫了大量與JVM相關的經典文章,被各大技術社區爭相轉載,是ITeye等技術社區公認的Java虛擬機方面的領袖人物之一。除本書外,還著有經典著作《深入理解OSGi:Equinox原理、應用與最佳實踐》,廣獲讀者好評。現任遠光軟件股份有限公司開發部總經理兼架構師,先後參與過國家電網、南方電網等多個國家級大型ERP項目的平臺架構工作,對軟件系統架構也有深刻的認識和體會。
目次
前言第一部分 走近Java第1章 走近Java1.1 概述1.2 Java技術體系1.3 Java發展史1.4 Java虛擬機發展史1.4.1 Sun Classic Exact VM1.4.2 Sun HotSpot VM1.4.3 Sun Mobile-Embedded VM Meta-Circular VM1.4.4 BEA JRockit IBM J9 VM1.4.5 Azul VM BEA Liquid VM1.4.6 Apache Harmony Google Android Dalvik VM1.4.7 Microsoft JVM及其他1.5 展望Java技術的未來1.5.1 模塊化1.5.2 混合語言1.5.3 多核並行1.5.4 進一步豐富語法1.5.5 64位虛擬機1.6 實戰:自己編譯JDK1.6.1 獲取JDK源碼1.6.2 系統需求1.6.3 構建編譯環境1.6.4 進行編譯1.6.5 在IDE工具中進行源碼調試1.7 本章小結第二部分 自動內存管理機制第2章 Java內存區域與內存溢出異常2.1 概述2.2 運行時數據區域2.2.1 程序計數器2.2.2 Java虛擬機棧2.2.3 本地方法棧2.2.4 Java堆2.2.5 方法區2.2.6 運行時常量池2.2.7 直接內存2.3 HotSpot虛擬機對象探秘2.3.1 對象的創建2.3.2 對象的內存佈局2.3.3 對象的訪問定位2.4 實戰:OutOfMemoryError異常2.4.1 Java堆溢出2.4.2 虛擬機棧和本地方法棧溢出2.4.3 方法區和運行時常量池溢出2.4.4 本機直接內存溢出2.5 本章小結第3章 垃圾收集器與內存分配策略3.1 概述3.2 對象已死嗎3.2.1 引用計數算法3.2.2 可達性分析算法3.2.3 再談引用3.2.4 生存還是死亡3.2.5 回收方法區3.3 垃圾收集算法3.3.1 標記-清除算法3.3.2 複製算法3.3.3 標記-整理算法3.3.4 分代收集算法3.4 HotSpot的算法實現3.4.1 枚舉根節點3.4.2 安全點3.4.3 安全區域3.5 垃圾收集器3.5.1 Serial收集器3.5.2 ParNew收集器3.5.3 Parallel Scavenge收集器3.5.4 Serial Old收集器3.5.5 Parallel Old收集器3.5.6 CMS收集器3.5.7 G1收集器3.5.8 理解GC日誌3.5.9 垃圾收集器參數總結3.6 內存分配與回收策略3.6.1 對象優先在Eden分配3.6.2 大對象直接進入老年代3.6.3 長期存活的對象將進入老年代3.6.4 動態對象年齡判定3.6.5 空間分配擔保3.7 本章小結第4章 虛擬機性能監控與故障處理工具4.1 概述4.2 JDK的命令行工具4.2.1 jps:虛擬機進程狀況工具4.2.2 jstat:虛擬機統計信息監視工具4.2.3 jinfo:Java配置信息工具4.2.4 jmap:Java內存映像工具4.2.5 jhat:虛擬機堆轉儲快照分析工具4.2.6 jstack:Java堆棧跟蹤工具4.2.7 HSDIS:JIT生成代碼反彙編4.3 JDK的可視化工具4.3.1 JConsole:Java監視與管理控制台4.3.2 VisualVM:多合一故障處理工具4.4 本章小結第5章 調優案例分析與實戰5.1 概述5.2 案例分析5.2.1 高性能硬件上的程序部署策略5.2.2 集群間同步導致的內存溢出5.2.3 堆外內存導致的溢出錯誤5.2.4 外部命令導致系統緩慢5.2.5 服務器JVM進程崩潰5.2.6 不恰當數據結構導致內存佔用過大5.2.7 由Windows虛擬內存導致的長時間停頓5.3 實戰:Eclipse運行速度調優5.3.1 調優前的程序運行狀態5.3.2 升級JDK 1.6的性能變化及兼容問題5.3.3 編譯時間和類加載時間的優化5.3.4 調整內存設置控制垃圾收集頻率5.3.5 選擇收集器降低延遲5.4 本章小結第三部分 虛擬機執行子系統第6章 類文件結構6.1 概述6.2 無關性的基石6.3 Class類文件的結構6.3.1 魔數與Class文件的版本6.3.2 常量池6.3.3 訪問標誌6.3.4 類索引、父類索引與接口索引集合6.3.5 字段表集合6.3.6 方法表集合6.3.7 屬性表集合6.4 字節碼指令簡介6.4.1 字節碼與數據類型6.4.2 加載和存儲指令6.4.3 運算指令6.4.4 類型轉換指令6.4.5 對象創建與訪問指令6.4.6 操作數棧管理指令6.4.7 控制轉移指令6.4.8 方法調用和返回指令6.4.9 異常處理指令6.4.10 同步指令6.5 公有設計和私有實現6.6 Class文件結構的發展6.7 本章小結第7章 虛擬機類加載機制7.1 概述7.2 類加載的時機7.3 類加載的過程7.3.1 加載7.3.2 驗證7.3.3 準備7.3.4 解析7.3.5 初始化7.4 類加載器7.4.1 類與類加載器7.4.2 雙親委派模型7.4.3 破壞雙親委派模型7.5 本章小結第8章 虛擬機字節碼執行引擎8.1 概述8.2 運行時棧幀結構8.2.1 局部變量表8.2.2 操作數棧8.2.3 動態連接8.2.4 方法返回地址8.2.5 附加信息8.3 方法調用8.3.1 解析8.3.2 分派8.3.3 動態類型語言支持8.4 基於棧的字節碼解釋執行引擎8.4.1 解釋執行8.4.2 基於棧的指令集與基於寄存器的指令集8.4.3 基於棧的解釋器執行過程8.5 本章小結第9章 類加載及執行子系統的案例與實戰9.1 概述9.2 案例分析9.2.1 Tomcat:正統的類加載器架構9.2.2 OSGi:靈活的類加載器架構9.2.3 字節碼生成技術與動態代理的實現9.2.4 Retrotranslator:跨越JDK版本9.3 實戰:自己動手實現遠程執行功能9.3.1 目標9.3.2 思路9.3.3 實現9.3.4 驗證9.4 本章小結第四部分 程序編譯與代碼優化第10章 早期(編譯期)優化10.1 概述10.2 Javac編譯器10.2.1 Javac的源碼與調試10.2.2 解析與填充符號表10.2.3 注解處理器10.2.4 語義分析與字節碼生成10.3 Java語法糖的味道10.3.1 泛型與類型擦除10.3.2 自動裝箱、拆箱與遍歷循環10.3.3 條件編譯10.4 實戰:插入式注解處理器10.4.1 實戰目標10.4.2 代碼實現10.4.3 運行與測試10.4.4 其他應用案例10.5 本章小結第11章 晚期(運行期)優化11.1 概述11.2 HotSpot虛擬機內的即時編譯器11.2.1 解釋器與編譯器11.2.2 編譯對象與觸發條件11.2.3 編譯過程11.2.4 查看及分析即時編譯結果11.3 編譯優化技術11.3.1 優化技術概覽11.3.2 公共子表達式消除11.3.3 數組邊界檢查消除11.3.4 方法內聯11.3.5 逃逸分析11.4 Java與CC++的編譯器對比11.5 本章小結第五部分 高效併發第12章 Java內存模型與線程12.1 概述12.2 硬件的效率與一致性12.3 Java內存模型12.3.1 主內存與工作內存12.3.2 內存間交互操作12.3.3 對於volatile型變量的特殊規則12.3.4 對於long和double型變量的特殊規則12.3.5 原子性、可見性與有序性12.3.6 先行發生原則12.4 Java與線程12.4.1 線程的實現12.4.2 Java線程調度12.4.3 狀態轉換12.5 本章小結第13章 線程安全與鎖優化13.1 概述13.2 線程安全13.2.1 Java語言中的線程安全13.2.2 線程安全的實現方法13.3 鎖優化13.3.1 自旋鎖與自適應自旋13.3.2 鎖消除13.3.3 鎖粗化13.3.4 輕量級鎖13.3.5 偏向鎖13.4 本章小結附 錄附錄A 編譯Windows版的OpenJDK附錄B 虛擬機字節碼指令表附錄C HotSpot虛擬機主要參數表附錄D 對象查詢語言(OQL)簡介附錄E JDK歷史版本軌跡
主題書展
更多
主題書展
更多書展今日66折
您曾經瀏覽過的商品
購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。