源碼結構圖,方便理解:
├─agent Serviceability Agent的客戶端實現
├─make 用來build出HotSpot的各種配置文件
├─src HotSpot VM的源代碼
│ ├─cpu CPU相關代碼(彙編器、模板解釋器、ad文件、部分runtime函數在這裡實現)
│ ├─os 操作系相關代碼
│ ├─os_cpu 操作系統+CPU的組合相關的代碼
│ └─share 平臺無關的共通代碼
│ ├─tools 工具
│ │ ├─hsdis 反彙編插件
│ │ ├─IdealGraphVisualizer 將server編譯器的中間代碼可視化的工具
│ │ ├─launcher 啟動程序“java”
│ │ ├─LogCompilation 將-XX:+LogCompilation輸出的日誌(hotspot.log)整理成更容易閱讀的格式的工具
│ │ └─ProjectCreator 生成Visual Studio的project文件的工具
│ └─vm HotSpot VM的核心代碼
│ ├─adlc 平臺描述文件(上面的cpu或os_cpu裡的*.ad文件)的編譯器
│ ├─asm 彙編器接口
│ ├─c1 client編譯器(又稱“C1”)
│ ├─ci 動態編譯器的公共服務/從動態編譯器到VM的接口
│ ├─classfile 類文件的處理(包括類加載和系統符號表等)
│ ├─code 動態生成的代碼的管理
│ ├─compiler 從VM調用動態編譯器的接口
│ ├─gc_implementation GC的實現
│ │ ├─concurrentMarkSweep Concurrent Mark Sweep GC的實現
│ │ ├─g1 Garbage-First GC的實現(不使用老的分代式GC框架)
│ │ ├─parallelScavenge ParallelScavenge GC的實現(server VM默認,不使用老的分代式GC框架)
│ │ ├─parNew ParNew GC的實現
│ │ └─shared GC的共通實現
│ ├─gc_interface GC的接口
│ ├─interpreter 解釋器,包括“模板解釋器”(官方版在用)和“C++解釋器”(官方版不在用)
│ ├─libadt 一些抽象數據結構
│ ├─memory 內存管理相關(老的分代式GC框架也在這裡)
│ ├─oops HotSpot VM的對象系統的實現
│ ├─opto server編譯器(又稱“C2”或“Opto”)
│ ├─prims HotSpot VM的對外接口,包括部分標準庫的
native部分和JVMTI實現│ ├─runtime 運行時支持庫(包括線程管理、編譯器調度、鎖、反射等)
│ ├─services 主要是用來支持JMX之類的管理功能的接口
│ ├─shark 基於LLVM的JIT編譯器(官方版裡沒有使用)
│ └─utilities 一些基本的工具類
└─test 單元測試
閱讀更多 菜根譚 的文章