HotSpot項目結構

之前已經介紹了Ubuntu16.04上編譯OpenJDK8源代碼調試HotSpot源代碼。這一章將介紹HotSpot項目的目錄結構。

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

src目錄的結構如下圖所示。

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目錄下一些重要子目錄的功能。

目錄

描述

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源碼剖析系列文章! 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章