之前已经介绍了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项目结构相关推荐

  1. openjdk8 项目结构_OpenJDK织机和结构化并发

    openjdk8 项目结构 Project Loom是Hotspot Group赞助的项目之一,旨在向JAVA世界提供高吞吐量和轻量级的并发模型. 在撰写本文时,Loom项目仍在积极开发中,其API可 ...

  2. Java Web项目结构

    Java Web项目结构(一般) 1.Java src 2.JRE System Library 3.Java EE 6 Libraries 4.Web App Libraries 5.WebRoot ...

  3. iOS SwiftUI篇-1 项目结构

    iOS SwiftUI篇-1 项目结构 介绍Xcode新建的SwiftUI模版项目结构.跟普通Storyboard模版项目的差异.SwiftUI项目的app启动流程.UIScene概念介绍.AppDe ...

  4. boot sprint 项目结构_京淘项目03 08.28

    JSP动态web资源,打war包 ##spring boot整合JSP 创建项目 spring SpringBoot整合web资源,, 在main文件下,新建webapp文件夹,,把WEBINF目录粘 ...

  5. Android 项目结构说明

    Android 项目结构说明 创建Android项目后,期目录结构如图 下面对图中的包和文件进行说明. 1.scr包   在scr包中,保存的是应用程序的源代码,如Java文件和AIDL文件. 2.g ...

  6. 【转载】C#编码标准━━项目设置和项目结构

    1.总是在4级警高上建立你的项目. 2.在发布版(Release)中,把警告当成错误来对待(注意这并不是 Visual Studio的默认选项).我们建议在调试版(Debug)中也这样设置,尽管这不是 ...

  7. Flutter入门二——项目结构及配置文件简介

    前言 环境搭建完成之后,我们来看看Flutter:New Project后生成的项目结构. 具体环境搭建可以参考:w7上使用VSCode配置Flutter开发环境 项目结构 pubspec.yaml配 ...

  8. ASP.NET Core 2.0 : 三. 项目结构

    ASP.NET Core 2.0 : 三. 项目结构 原文:ASP.NET Core 2.0 : 三. 项目结构 本章我们一起来对比着ASP.NET Framework版本看一下ASP.NET Cor ...

  9. Orchard 的项目结构-解决方案文件夹的原理与使用

    Orchard 的项目结构-解决方案文件夹的原理与使用 参考文章: (1)Orchard 的项目结构-解决方案文件夹的原理与使用 (2)https://www.cnblogs.com/haogj/ar ...

最新文章

  1. 使用pytorch建立LSTM神经网络训练识别手写数字
  2. MySQL5.7.17绿色版安装
  3. 线程其实就是一个个指令组成的,当这个线程内的指令全部执行完了,那么这个线程也就执行结束了
  4. 一个女孩子对老公/男朋友的要求
  5. 求AOE图的 拓扑排序 及关键路径长度(java实现)
  6. 教你怎样做好计划 将愿望慢慢实现
  7. android 机顶盒 页面布局,Android机顶盒用户DIY手册.doc
  8. IBM连续20个季度营收下滑,但这可能是个好信号
  9. 夜上海音乐播放器 v 1.0
  10. 2016-5-31 项目结构调整
  11. C++ const型成员函数与 non-const型成员函数 (二)
  12. web前端面试:不做面试“海王”,一份资料就可成功上岸!
  13. 系统分析师-论文准备
  14. 昆仑通态MCGS与三菱FX3U 485BD方式通讯案例 实现昆仑通态触摸屏与三菱FX3U的485BD板通过485方式进行连接
  15. 计算机中文件夹属性有哪些,文件和文件夹属性
  16. 图片裁切批处理_图片批量处理 如何批量将图片裁剪成一样的大小?按照一定的比例快速裁剪多张照片...
  17. Linux内核kernel panic机制浅析
  18. Linux(Ubuntu)系统查看显卡型号
  19. 第一次做鸭子的感受!
  20. 软件项目管理案例:假设50万的资金准备开设一间咖啡馆,请按照WBS原理将开设咖啡馆过程中所可能涉及的工作进行分解。

热门文章

  1. 西门子PLC300编程实例程序70例 含RFID读写器专用功能块 西门子PLC300编程应用实例程序
  2. OTA是如何改变现代车辆能力的
  3. SecureCRT 注册
  4. Minifilter 拦截FileMapping IO事件
  5. ARM内核中寄存器的浅见
  6. linux 常用命令汇总(面向面试)
  7. 7款超级好用的AI智能工具,功能超越你的想象
  8. 反欺诈概念库-虚假交易
  9. 欧鹏浏览器html5用不了,HTML5新时代 欧朋浏览器H5体验版试用
  10. 打卡第4天:安恒元旦杯-爆破鬼才与CRC