HotSpot項目結構

以前已經介紹了在Ubuntu 16.04上編譯OpenJDK8的源代碼調試HotSpot源代碼。這一章將介紹HotSpot項目的目錄結構。html

HotSpot目錄下主要由agent、make、src和test這4個子目錄構成。其中agent目錄下包含了Serviceability Agent的客戶端實現;make目錄下包含了用於編譯HotSpot的各類配置文件;src目錄是最重要的一個目錄,本書講解的全部源代碼都包含在這個目錄下;test目錄下包含HotSpot相關的一些單元測試用例。linux

src目錄的結構以下圖所示。windows

src目錄下包含了HotSpot項目的主體源代碼,主要由cpu、os、os_cpu與share這4個子目錄構成。下面簡單介紹一下這4個子目錄,以下:數據結構

  • cpu目錄:此目錄下包含一些依賴具體處理器架構的代碼,如今主流的處理器架構主要有sparc、x86和zero,其中x86又最爲常見,筆者的電腦cpu也是x86架構,因此在在涉及到相關源代碼實現時,只會講解x86目錄下的源代碼實現。架構

  • os目錄:此目錄下包含一些依賴操做系統的代碼,主要的操做系統有基於linux內核的操做系統、基於unix的操做系統(posix)、windows和solaris。筆者的電腦是基於linux內核的Ubuntu操做系統,因此在涉及到相關源代碼實現時,只會講解linux目錄下的源代碼實現。函數

  • os_cpu目錄:此目錄下包含一些依賴操做系統和處理器架構的代碼,如linux_x86目錄。linux_x86目錄下包含的就是基於linux內核的操做系統和x86處理器架構相關的代碼,也是筆者本書要講解的源代碼實現。工具

  • share目錄:此目錄下包含了獨立於操做系統和處理器架構的代碼,尤爲是vm子目錄,這個子目錄中包含的內容比較多,HotSpot主要的一些功能模塊都包含在這個子目錄下。下表介紹了vm目錄下一些重要子目錄的功能。oop

 

目錄單元測試

描述測試

adlc

平臺描述文件

asm

彙編器

c1

C1編譯器,即client編譯器

ci

動態編譯器

classfile

Class文件解析和類的連接等

code

機器碼生成

compiler

調用動態編譯器的接口

Opto

C2編譯器,即server編譯器

gc_interface

GC接口

gc_implementation

垃圾收集器的具體實現

interpreter

解釋器

libadt

抽象數據結構

memory

內存管理

oops

JVM內部對象表示

prims

HotSpot對外接口

runtime

運行時

services

JMX接口

utilizes

內部工具類和公共函數

 

關注我的博客www.classloading.com或公衆號,有HotSpot源碼剖析系列文章! 

 

相關文章
相關標籤/搜索