當前位置:成語大全網 - 新華字典 - HotSpot實戰的作品目錄

HotSpot實戰的作品目錄

第1章 初識HotSpot

1.1 JDK概述

1.1.1 JCP與JSR

1.1.2 JDK的發展歷程

1.1.3 Java 7的語法變化

1.2 動手編譯虛擬機

1.2.1 源代碼下載

1.2.2 HotSpot源代碼結構

1.2.3 搭建編譯環境

1.2.4 編譯目標

1.2.5 編譯過程

1.2.6 編譯常見問題

1.3 實戰:在HotSpot內調試HelloWorld

1.3.1 認識GDB

1.3.2 準備調試腳本

1.4 小結

第2章 啟動

2.1 HotSpot內核

2.1.1 如何閱讀源代碼

2.1.2 HotSpot內核框架

2.1.3 Prims

2.1.4 Services

2.1.5 Runtime

2.2 啟動

2.2.1 Launcher

2.2.2 虛擬機生命周期

2.2.3 入口:main函數

2.2.4 主線程

2.2.5 InitializeJVM函數

2.2.6 JNI_CreateJavaVM函數

2.2.7 調用Java主方法

2.2.8 JVM退出路徑

2.3 系統初始化

2.3.1 配置OS模塊

2.3.2 配置系統屬性

2.3.3 加載系統庫

2.3.4 啟動線程

2.3.5 vm_init_globals函數:初始化全局數據結構

2.3.6 init_globals函數:初始化全局模塊

2.4 小結

第3章 類與對象

3.1 對象表示機制

3.1.1 OOP-Klass二分模型

3.1.2 Oops模塊

3.1.3 OOP框架與對象訪問機制

3.1.4 Klass與instanceKlass

3.1.5 實戰:用HSDB調試HotSpot

3.2 類的狀態轉換

3.2.1 入口:Class文件

3.2.2 類的狀態

3.2.3 加載

3.2.4 鏈接

3.2.5 初始化

3.2.6 實戰:類的“族譜”

3.2.7 實戰:系統字典

3.3 創建對象

3.3.1 實例對象的創建流程

3.3.2 實戰:探測JVM內部對象

3.4 小結

第4章 運行時數據區

4.1 堆

4.1.1 Java的自動內存管理

4.1.2 堆的管理

4.2 線程私有區域

4.2.1 PC

4.2.2 JVM棧

4.3 方法區

4.3.1 紐帶作用

4.3.2 常量池

4.3.3 常量池緩存:ConstantPoolCache

4.3.4 方法的表示:methodOop

4.3.5 方法的解析:將符號引用轉換成直接引用

4.3.6 代碼放在哪裏:ConstMethodOop

4.3.7 實戰:探測運行時常量池

4.4 性能監控數據區:Perf Data

4.4.1 描述這段空間:PerfMemory

4.4.2 查看

4.4.3 生產

4.5 轉儲

4.5.1 用VisualVM進行轉儲分析

4.5.2 JVM Crash

4.6 小結

第5章 垃圾收集

5.1 堆與GC

5.1.1 垃圾收集

5.1.2 分代收集

5.1.3 快速分配

5.1.4 棧上分配和逸出分析

5.1.5 GC公***模塊

5.2 垃圾收集器

5.2.1 設計演進

5.2.2 CMS收集器

5.2.3 G1收集器

5.3 實戰:性能分析方法

5.3.1 獲取GC日誌

5.3.2 GC監控信息

5.3.3 內存分析工具

5.3.4 選擇合適的收集器與GC性能評估

5.3.5 不要忽略JVM Crash日誌

5.4 小結

第6章 棧

6.1 硬件背景:了解真實機器

6.1.1 程序是如何運行的

6.1.2 x86與棧幀

6.1.3 ARM對Java硬件級加速:Jazelle技術

6.2 Java棧

6.2.1 寄存器式指令集與棧式指令集

6.2.2 HotSpot中的棧

6.2.3 棧幀

6.2.4 充分利用寄存器資源

6.2.5 虛擬機如何調用Java函數

6.2.6 優化:棧頂緩存

6.2.7 實戰:操作數棧

6.3 小結

第7章 解釋器和即時編譯器

7.1 概述

7.2 解釋器如何工作

7.2.1 Interpreter模塊

7.2.2 Code模塊

7.2.3 字節碼表

7.2.4 Code Cache

7.2.5 InterpreterCodelet與Stubs隊列

7.2.6 Code生成器

7.2.7 模板表與轉發表

7.2.8 實戰:InterpreterCodelet

7.3 即時編譯器

7.3.1 概述

7.3.2 編譯器模塊

7.3.3 編譯器的基本結構

7.3.4 實戰:編譯原理實踐,了解編譯中間環節

7.4 小結

第8章 指令集

8.1 再說棧式指令集

8.2 數據傳送

8.2.1 局部變量、常量池和操作數棧之間的數據傳送

8.2.2 數據傳送指令

8.2.4 實戰:數組的越界檢查

8.3 類型轉換

8.4 對象的創建和操作

8.5 程序流程控制

8.5.1 控制轉移指令

8.5.2 條件轉移

8.5.3 無條件轉移

8.5.4 復合條件轉移

8.5.5 實戰:switch語句如何使用String

8.6 運算

8.6.1 加法:iadd

8.6.2 取負:ineg

8.7 函數的調用和返回

8.7.1 Java函數分發機制:VTABLE與ITABLE

8.7.2 invoke系列指令

8.7.3 動態分發:覆蓋

8.7.4 靜態分發:重載

8.8 異常

8.8.1 異常表

8.8.2 創建異常

8.8.3 try-catch

8.8.4 finally

8.9 小結

第9章 虛擬機監控工具

9.1 Attach機制

9.1.1 AttachProvider與VirtualMachine

9.1.2 命令的下發:execute()

9.1.3 命令的執行:Attach Listener守護線程

9.2 查看JVM進程

9.2.1 用jps查看Java進程

9.2.2 實戰:定制jps,允許查看庫路徑

9.3 查看和配置JVM

9.3.1 用jinfo查看JVM參數配置

9.3.2 實戰:擴展flags選項,允許查看命令行參數

9.4 堆內存轉儲工具

9.4.1 Heap Dump

9.4.2 原理

9.5 堆轉儲分析

9.5.1 Heap Dump分析工具:jhat

9.5.2 實戰:MAT分析過程

9.6 線程轉儲分析

9.6.1 jstack

9.6.2 實戰:如何分析資源等待

9.7 小結