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

 

相关文章
相关标签/搜索