深入理解Java虛擬機 JVM高級特性與最佳實踐(第2版)pdf

圖書網
圖書網
圖書網
11875
文章
1880
評論
2021年2月8日14:30:58
評論
58

深入理解Java虛擬機 JVM高級特性與最佳實踐(第2版) 作者:周志明

深入理解Java虛擬機 JVM高級特性與最佳實踐(第2版) 出版社:機械工業出版社

深入理解Java虛擬機 JVM高級特性與最佳實踐(第2版) 內容簡介

全書共分為五大部分,圍繞內存管理、執行子系統、程序編譯與優化、高效并發等核心主題對JVM進行了全面而深入的分析,深刻揭示了JVM的工作原理。第一部分從宏觀的角度介紹了整個Java技術體系、Java和JVM的發展歷程、模塊化,以及JDK的編譯,這對理解本書后面內容有重要幫助。第二部分講解了JVM的自動內存管理,包括虛擬機內存區域的劃分原理以及各種內存溢出異常產生的原因;常見的垃圾收集算法以及垃圾收集器的特點和工作原理;常見虛擬機監控與故障處理工具的原理和使用方法。第三部分分析了虛擬機的執行子系統,包括類文件結構、虛擬機類加載機制、虛擬機字節碼執行引擎。第四部分講解了程序的編譯與代碼的優化,闡述了泛型、自動裝箱拆箱、條件編譯等語法糖的原理;講解了虛擬機的熱點探測方法、HotSpot的即時編譯器、編譯觸發條件,以及如何從虛擬機外部觀察和分析JIT編譯的數據和結果;第五部分探討了Java實現高效并發的原理,包括JVM內存模型的結構和操作;原子性、可見性和有序性在Java內存模型中的體現;先行發生原則的規則和使用;線程在Java語言中的實現原理;虛擬機實現高效并發所做的一系列鎖優化措施。

深入理解Java虛擬機 JVM高級特性與最佳實踐(第2版) 目錄

前言

第一部分 走近Java

第1章 走近Java

1.1 概述

香蕉小视频app1.2 Java技術體系

1.3 Java發展史

1.4 Java虛擬機發展史

1.4.1 Sun Classic Exact VM

香蕉小视频app1.4.2 Sun HotSpot VM

香蕉小视频app1.4.3 Sun Mobile-Embedded VM Meta-Circular VM

1.4.4 BEA JRockit IBM J9 VM

1.4.5 Azul VM BEA Liquid VM

1.4.6 Apache Harmony Google Android Dalvik VM

1.4.7 Microsoft JVM及其他

1.5 展望Java技術的未來

1.5.1 模塊化

1.5.2 混合語言

1.5.3 多核并行

1.5.4 進一步豐富語法

香蕉小视频app1.5.5 64位虛擬機

香蕉小视频app1.6 實戰:自己編譯JDK

香蕉小视频app1.6.1 獲取JDK源碼

1.6.2 系統需求

1.6.3 構建編譯環境

1.6.4 進行編譯

香蕉小视频app1.6.5 在IDE工具中進行源碼調試

1.7 本章小結

第二部分 自動內存管理機制

第2章 Java內存區域與內存溢出異常

2.1 概述

香蕉小视频app2.2 運行時數據區域

2.2.1 程序計數器

香蕉小视频app2.2.2 Java虛擬機棧

2.2.3 本地方法棧

2.2.4 Java堆

2.2.5 方法區

香蕉小视频app2.2.6 運行時常量池

2.2.7 直接內存

2.3 HotSpot虛擬機對象探秘

2.3.1 對象的創建

香蕉小视频app2.3.2 對象的內存布局

香蕉小视频app2.3.3 對象的訪問定位

香蕉小视频app2.4 實戰:OutOfMemoryError異常

2.4.1 Java堆溢出

香蕉小视频app2.4.2 虛擬機棧和本地方法棧溢出

2.4.3 方法區和運行時常量池溢出

香蕉小视频app2.4.4 本機直接內存溢出

2.5 本章小結

香蕉小视频app第3章 垃圾收集器與內存分配策略

3.1 概述

3.2 對象已死嗎

3.2.1 引用計數算法

3.2.2 可達性分析算法

3.2.3 再談引用

3.2.4 生存還是死亡

3.2.5 回收方法區

3.3 垃圾收集算法

香蕉小视频app3.3.1 標記-清除算法

3.3.2 復制算法

3.3.3 標記-整理算法

香蕉小视频app3.3.4 分代收集算法

3.4 HotSpot的算法實現

香蕉小视频app3.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收集器

香蕉小视频app3.5.5 Parallel Old收集器

3.5.6 CMS收集器

3.5.7 G1收集器

香蕉小视频app3.5.8 理解GC日志

香蕉小视频app3.5.9 垃圾收集器參數總結

香蕉小视频app3.6 內存分配與回收策略

3.6.1 對象優先在Eden分配

香蕉小视频app3.6.2 大對象直接進入老年代

3.6.3 長期存活的對象將進入老年代

香蕉小视频app3.6.4 動態對象年齡判定

3.6.5 空間分配擔保

3.7 本章小結

第4章 虛擬機性能監控與故障處理工具

4.1 概述

4.2 JDK的命令行工具

香蕉小视频app4.2.1 jps:虛擬機進程狀況工具

4.2.2 jstat:虛擬機統計信息監視工具

香蕉小视频app4.2.3 jinfo:Java配置信息工具

香蕉小视频app4.2.4 jmap:Java內存映像工具

4.2.5 jhat:虛擬機堆轉儲快照分析工具

香蕉小视频app4.2.6 jstack:Java堆棧跟蹤工具

4.2.7 HSDIS:JIT生成代碼反匯編

香蕉小视频app4.3 JDK的可視化工具

4.3.1 JConsole:Java監視與管理控制臺

香蕉小视频app4.3.2 VisualVM:多合一故障處理工具

4.4 本章小結

香蕉小视频app第5章 調優案例分析與實戰

5.1 概述

5.2 案例分析

香蕉小视频app5.2.1 高性能硬件上的程序部署策略

5.2.2 集群間同步導致的內存溢出

5.2.3 堆外內存導致的溢出錯誤

5.2.4 外部命令導致系統緩慢

香蕉小视频app5.2.5 服務器JVM進程崩潰

5.2.6 不恰當數據結構導致內存占用過大

香蕉小视频app5.2.7 由Windows虛擬內存導致的長時間停頓

5.3 實戰:Eclipse運行速度調優

香蕉小视频app5.3.1 調優前的程序運行狀態

5.3.2 升級JDK 1.6的性能變化及兼容問題

5.3.3 編譯時間和類加載時間的優化

5.3.4 調整內存設置控制垃圾收集頻率

5.3.5 選擇收集器降低延遲

5.4 本章小結

香蕉小视频app第三部分 虛擬機執行子系統

第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 方法表集合

香蕉小视频app6.3.7 屬性表集合

6.4 字節碼指令簡介

香蕉小视频app6.4.1 字節碼與數據類型

香蕉小视频app6.4.2 加載和存儲指令

6.4.3 運算指令

6.4.4 類型轉換指令

香蕉小视频app6.4.5 對象創建與訪問指令

6.4.6 操作數棧管理指令

香蕉小视频app6.4.7 控制轉移指令

6.4.8 方法調用和返回指令

6.4.9 異常處理指令

6.4.10 同步指令

香蕉小视频app6.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 本章小結

香蕉小视频app第8章 虛擬機字節碼執行引擎

8.1 概述

香蕉小视频app8.2 運行時棧幀結構

香蕉小视频app8.2.1 局部變量表

8.2.2 操作數棧

8.2.3 動態連接

8.2.4 方法返回地址

8.2.5 附加信息

8.3 方法調用

8.3.1 解析

8.3.2 分派

香蕉小视频app8.3.3 動態類型語言支持

8.4 基于棧的字節碼解釋執行引擎

8.4.1 解釋執行

8.4.2 基于棧的指令集與基于寄存器的指令集

8.4.3 基于棧的解釋器執行過程

8.5 本章小結

香蕉小视频app第9章 類加載及執行子系統的案例與實戰

9.1 概述

9.2 案例分析

9.2.1 Tomcat:正統的類加載器架構

9.2.2 OSGi:靈活的類加載器架構

香蕉小视频app9.2.3 字節碼生成技術與動態代理的實現

9.2.4 Retrotranslator:跨越JDK版本

香蕉小视频app9.3 實戰:自己動手實現遠程執行功能

9.3.1 目標

9.3.2 思路

9.3.3 實現

9.3.4 驗證

9.4 本章小結

第四部分 程序編譯與代碼優化

第10章 早期(編譯期)優化

10.1 概述

10.2 Javac編譯器

香蕉小视频app10.2.1 Javac的源碼與調試

香蕉小视频app10.2.2 解析與填充符號表

10.2.3 注解處理器

香蕉小视频app10.2.4 語義分析與字節碼生成

10.3 Java語法糖的味道

10.3.1 泛型與類型擦除

10.3.2 自動裝箱、拆箱與遍歷循環

香蕉小视频app10.3.3 條件編譯

10.4 實戰:插入式注解處理器

10.4.1 實戰目標

香蕉小视频app10.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 編譯過程

香蕉小视频app11.2.4 查看及分析即時編譯結果

香蕉小视频app11.3 編譯優化技術

11.3.1 優化技術概覽

香蕉小视频app11.3.2 公共子表達式消除

11.3.3 數組邊界檢查消除

11.3.4 方法內聯

香蕉小视频app11.3.5 逃逸分析

11.4 Java與CC 的編譯器對比

11.5 本章小結

第五部分 高效并發

第12章 Java內存模型與線程

12.1 概述

12.2 硬件的效率與一致性

12.3 Java內存模型

香蕉小视频app12.3.1 主內存與工作內存

香蕉小视频app12.3.2 內存間交互操作

香蕉小视频app12.3.3 對于volatile型變量的特殊規則

12.3.4 對于long和double型變量的特殊規則

香蕉小视频app12.3.5 原子性、可見性與有序性

12.3.6 先行發生原則

12.4 Java與線程

香蕉小视频app12.4.1 線程的實現

12.4.2 Java線程調度

香蕉小视频app12.4.3 狀態轉換

12.5 本章小結

第13章 線程安全與鎖優化

13.1 概述

13.2 線程安全

香蕉小视频app13.2.1 Java語言中的線程安全

香蕉小视频app13.2.2 線程安全的實現方法

13.3 鎖優化

13.3.1 自旋鎖與自適應自旋

13.3.2 鎖消除

13.3.3 鎖粗化

香蕉小视频app13.3.4 輕量級鎖

13.3.5 偏向鎖

13.4 本章小結

附  錄

附錄A 編譯Windows版的OpenJDK

香蕉小视频app附錄B 虛擬機字節碼指令表

附錄C HotSpot虛擬機主要參數表

附錄D 對象查詢語言(OQL)簡介

香蕉小视频app附錄E JDK歷史版本軌跡

深入理解Java虛擬機 JVM高級特性與最佳實踐(第2版) 精彩文摘

香蕉小视频app1.4.2 Sun HotSpot VM

提起HotSpot VM,相信所有Java程序員都知道,它是Sun JDK和OpenJDK中所帶的虛擬機,也是目前使用范圍最廣的Java虛擬機。但不一定所有人都知道的是,這個目前看起來“血統純正”的虛擬機在最初并非由Sun公司開發,而是由一家名為“LongviewTechnologies”的小公司設計的;甚至這個虛擬機最初并非是為Java語言而開發的,它來源于Strongtalk VM,而這款虛擬機中相當多的技術又是來源于一款支持Self語言實現“達到C語言50%以上的執行效率”的目標而設計的虛擬機,Sun公司注意到了這款虛擬機在JIT編譯上有許多優秀的理念和實際效果,在1997年收購了Longview Technologies公司,從而獲得了HotSpot VM。

香蕉小视频appHotSpot VM既繼承了Sun之前兩款商用虛擬機的優點(如前面提到的準確式內存管理),也有許多自己新的技術優勢,如它名稱中的HotSpot指的就是它的熱點代碼探測技術(其實兩個VM基本上是同時期的獨立產品,HotSpot還稍早一些,HotSpot一開始就是準確式GC,而Exact VM之中也有與HotSpot幾乎一樣的熱點探測。為了Exact VM和HotSpotVM哪個成為Sun主要支持的VM產品,在Sun公司內部還有過爭論,HotSpot打敗Exact并不能算技術上的勝利),HotSpot VM的熱點代碼探測能力可以通過執行計數器找出最具有編譯價值的代碼,然后通知JIT編譯器以方法為單位進行編譯。如果一個方法被頻繁調用,或方法中有效循環次數很多,將會分別觸發標準編譯和0SR(棧上替換)編譯動作。通過編譯器與解釋器恰當地協同工作,可以在最優化的程序響應時間與最佳執行性能中取得平衡,而且無須等待本地代碼輸出才能執行程序,即時編譯的時間壓力也相對減小,這樣有助于引入更多的代碼優化技術,輸出質量更高的本地代碼。

香蕉小视频app在2006年的JavaOne大會上,Sun公司宣布最終會把Java開源,并在隨后的一年,陸續將JDK的各個部分(其中當然也包括了HotSpot VM)在GPL協議下公開了源碼。

圖書網:深入理解Java虛擬機 JVM高級特性與最佳實踐(第2版)pdf

繼續閱讀
資源地址:用心發表評論,回復即可查看(字數限制至少10字以上)。
  • 我的微信
  • 掃一掃加好友
  • weinxin
  • 微信公眾號
  • 掃一掃關注
  • weinxin
Java高并發編程詳解 多線程與架構設計pdf 程序設計

Java高并發編程詳解 多線程與架構設計pdf

適讀人群 :1. 開發人員。他們可以非常系統地掌握Java多線程高并發的開發技巧和深入理解其中API的細節;2. 架構師。他們可以掌握架構設計的技巧,搭建高吞吐量高可用的Java應...
機械測量技術pdf 機械儀表工業

機械測量技術pdf

機械測量技術 作者:趙賢民 機械測量技術 出版社:機械工業出版社 機械測量技術 內容簡介 《機械測量技術》是根據中職機械類、近機械類各專業使用各種工量具進行產品檢測的基本要求編寫而成的。《機械測量技術...
Spring Boot 開發實戰pdf 程序設計

Spring Boot 開發實戰pdf

適讀人群 :1.Web開發人員2.Java應用開發者 本書以案例方式,詳細介紹如何使用 Spring Boot 2.0 框架快速開發企業級應用,包含詳細步驟、示例代碼,所有代碼都可...
匿名

發表評論

匿名網友 填寫信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: