HotSpot项目结构
之前已经介绍了在Ubuntu 16.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项目结构的更多相关文章
- 认识ASP.NET 5项目结构和项目文件xproj
		
ASP.NET 5 在项目结构上做了很大的改变,我们以前熟悉的目录结构与项目文件内容都不太一样了,本篇文章带大家了解 ASP.NET 5 到底跟以前有哪些不一样的地方. 我们先用 Visual Stu ...
 - 【完全开源】知乎日报UWP版:项目结构说明、关键源代码解释
		
目录 说明 项目结构 关键代码 演示视频 说明 上一篇博客将源码放出来了,但是并没有做过多的介绍,所以如果自己硬看可能需要花费很长的时间,尤其这些代码并不是自己写的.项目不算复杂但是也不算简单,这篇文 ...
 - Android之什么是Activity和常用的ADB命令以及Android项目结构的认识
		
总结一下之前学习Android的一些内容 一: Android常用的ADB命令(adb android调试桥) 1.adb devices 查看模拟器设备并重新连接. 2.adb ki ...
 - Go项目结构和模块导入
		
Go项目结构和模块导入 golang项目结构与其他语言类似,但是仍然有一些需要注意的地方. 项目结构 环境配置 go 命令依赖一个重要的环境变量:$GOPATH,它表示GO项目的路径,如下设置 exp ...
 - android第一行代码-1.项目结构
		
0.项目结构 一个简单的android项目结构大致如下 入口就是MainActivity这个类,如果对于一个陌生的项目,最好的办法是看AndroidMainifest.xml,如下 <?xml ...
 - Mybatis 复习 Mybatis 配置 Mybatis项目结构
		
pom.xml文件已经贴在了文末.该项目不使用mybatis的mybatis-generator-core,而是手写Entities类,DaoImpl类,CoreMapper类 其中,Entities ...
 - django开发个人简易Blog——构建项目结构
		
开发之前第一步,就是构造整个的项目结构.这就好比作一幅画,第一步就是描绘轮廓,有了轮廓,剩下的就是慢慢的填充细节.项目结构规划如下图: 项目结构描述: 本项目以fengzhengBlog为根目录. a ...
 - 架构系列:ASP.NET 项目结构搭建
		
我们头开始,从简单的单项目解决方案,逐步添加业务逻辑的约束,从应用逻辑和领域逻辑两方面考虑,从简单的单个项目逐步搭建一个多项目的解决方案.主要内容:(1)搭建应用逻辑和领域逻辑都简单的单项目 (2)为 ...
 - Android项目结构 以及体系结构
		
学习Android平台的人一般对Android的平台的应该有点认识 其它的就不多讲了 Android项目一般由以下几个部分构成 以上是一个简单的Android项目结构目录图 1. src 主要是 源 ...
 
随机推荐
- @Ajax.ActionLink跳转页面的问题解决方案 MVC Ajax不支持问题
			
[JavaScriptResult]在客户端执行服务器返回的JavaScript代码当一个内置的Ajax辅助方法请求一个操作方法,该方法会返回一个在客户端执行立即的脚本. public ActionR ...
 - 传递函数-微分方程-差分方程-Matlab阶跃响应曲线
			
Transfer function: 1 ------- 5 s + 1 写成微分方程: 5y'(t)+y(t)=u(t) 向前差分: 5y(k+1)+(T-5)y(k)=Tu(k) T:Sample ...
 - Spring事务之@Transactional
			
参考源API : https://docs.spring.io/spring/docs/current/javadoc-api/ org.springframework.transaction.ann ...
 - 攻防世界misc新手区前三题
			
1.this_is_flag 从题目以及题目的描述来看,不难发现实际上题目中所描述的就是flag 2.Pdf 拿到题目附件是pdf文件,观察题目描述,题目说图下面什么都没有,那么十有八九图下面肯定是f ...
 - Express4.x之API:express
			
express()表达式 express的方法 express功能分析 一.express()表达式 创建Express应用程序.express()函数是express模块导出的顶级函数.(相当于HT ...
 - (五)application/x-www-form-urlencoded(表单请求)
			
原文链接:https://blog.csdn.net/justry_deng/article/details/81042379
 - 【Spring注解驱动开发】面试官:如何将Service注入到Servlet中?朋友又栽了!!
			
写在前面 最近,一位读者出去面试前准备了很久,信心满满的去面试.没想到面试官的一个问题把他难住了.面试官的问题是这样的:如何使用Spring将Service注入到Servlet中呢?这位读者平时也是很 ...
 - pycharm 配置 git 方法
			
1.打开pycharm ,点击 file——Default-setting——version control 2.配置github账号密码 3.Path to Git executable中填写git ...
 - python中的bytes和str类型
			
经过一上午的查找资料.大概理清楚了bytes类型和str类型的区别. bytes类型和str类型在呈现形式有相同之处,如果你print一个bytes类型的变量,会打印一个用b开头,用单引号括起来的序列 ...
 - Zookeeper——Watcher原理详解
			
文章目录 引言 正文 一.如何注册监听 二.如何触发监听事件 三.事件类型有哪些 四.Watcher可以被无限次触发么?为什么要这么设计? 五.Watcher实现原理 1. 客服端发送请求 a. 初始 ...