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源码剖析系列文章!
HotSpot项目结构相关推荐
- openjdk8 项目结构_OpenJDK织机和结构化并发
openjdk8 项目结构 Project Loom是Hotspot Group赞助的项目之一,旨在向JAVA世界提供高吞吐量和轻量级的并发模型. 在撰写本文时,Loom项目仍在积极开发中,其API可 ...
- Java Web项目结构
Java Web项目结构(一般) 1.Java src 2.JRE System Library 3.Java EE 6 Libraries 4.Web App Libraries 5.WebRoot ...
- iOS SwiftUI篇-1 项目结构
iOS SwiftUI篇-1 项目结构 介绍Xcode新建的SwiftUI模版项目结构.跟普通Storyboard模版项目的差异.SwiftUI项目的app启动流程.UIScene概念介绍.AppDe ...
- boot sprint 项目结构_京淘项目03 08.28
JSP动态web资源,打war包 ##spring boot整合JSP 创建项目 spring SpringBoot整合web资源,, 在main文件下,新建webapp文件夹,,把WEBINF目录粘 ...
- Android 项目结构说明
Android 项目结构说明 创建Android项目后,期目录结构如图 下面对图中的包和文件进行说明. 1.scr包 在scr包中,保存的是应用程序的源代码,如Java文件和AIDL文件. 2.g ...
- 【转载】C#编码标准━━项目设置和项目结构
1.总是在4级警高上建立你的项目. 2.在发布版(Release)中,把警告当成错误来对待(注意这并不是 Visual Studio的默认选项).我们建议在调试版(Debug)中也这样设置,尽管这不是 ...
- Flutter入门二——项目结构及配置文件简介
前言 环境搭建完成之后,我们来看看Flutter:New Project后生成的项目结构. 具体环境搭建可以参考:w7上使用VSCode配置Flutter开发环境 项目结构 pubspec.yaml配 ...
- ASP.NET Core 2.0 : 三. 项目结构
ASP.NET Core 2.0 : 三. 项目结构 原文:ASP.NET Core 2.0 : 三. 项目结构 本章我们一起来对比着ASP.NET Framework版本看一下ASP.NET Cor ...
- Orchard 的项目结构-解决方案文件夹的原理与使用
Orchard 的项目结构-解决方案文件夹的原理与使用 参考文章: (1)Orchard 的项目结构-解决方案文件夹的原理与使用 (2)https://www.cnblogs.com/haogj/ar ...
最新文章
- 使用pytorch建立LSTM神经网络训练识别手写数字
- MySQL5.7.17绿色版安装
- 线程其实就是一个个指令组成的,当这个线程内的指令全部执行完了,那么这个线程也就执行结束了
- 一个女孩子对老公/男朋友的要求
- 求AOE图的 拓扑排序 及关键路径长度(java实现)
- 教你怎样做好计划 将愿望慢慢实现
- android 机顶盒 页面布局,Android机顶盒用户DIY手册.doc
- IBM连续20个季度营收下滑,但这可能是个好信号
- 夜上海音乐播放器 v 1.0
- 2016-5-31 项目结构调整
- C++ const型成员函数与 non-const型成员函数 (二)
- web前端面试:不做面试“海王”,一份资料就可成功上岸!
- 系统分析师-论文准备
- 昆仑通态MCGS与三菱FX3U 485BD方式通讯案例 实现昆仑通态触摸屏与三菱FX3U的485BD板通过485方式进行连接
- 计算机中文件夹属性有哪些,文件和文件夹属性
- 图片裁切批处理_图片批量处理 如何批量将图片裁剪成一样的大小?按照一定的比例快速裁剪多张照片...
- Linux内核kernel panic机制浅析
- Linux(Ubuntu)系统查看显卡型号
- 第一次做鸭子的感受!
- 软件项目管理案例:假设50万的资金准备开设一间咖啡馆,请按照WBS原理将开设咖啡馆过程中所可能涉及的工作进行分解。