Hotspot源码解析-第一章

第一章

源码下载

​ 本次源码解析是以jdk1.8为基础的jvm源码,这里要简单介绍一下OpenJDK与Hotspot的关系:OpenJDK是JDK的开放原始码版本,而HotSpot只是OpenJDK中使用的虚拟机模块,也就是JVM,可以简单概括为OpenJDK > Hotspot,好了,有了这个前提,后面的事情就好理解了。

1、打开OpenJDK官网:https://openjdk.org/

2、找到左侧的Mercurial,点击进入新界面
在这里插入图片描述

3、选择jdk8,点击进入新界面
在这里插入图片描述

4、整个源码结构,每个都要点击并下载,假设选择的是hotspot
在这里插入图片描述

5、点击zip下载
在这里插入图片描述

6、全部下载后,解压到同一个文件夹下
在这里插入图片描述

至此,源码已经下载完成,然后用Source Insight工具来打开源码,这里推荐这个工具,看源码非常方便,网上自行下载。考虑到Source Insight的搜索效率不高,建议再下载一个eclipse来辅助查看源码。

OpenJDK目录结构

目录描述
corbacorba的实现
hotspothotspot虚拟机实现
jaxpjaxp实现,处理xml的API
jaxwsjax-ws实现,提供webservice的API
jdkjava类库等的实现
langtools各种工具库
nashornjavascript实现

Hotspot目录结构

在这里插入图片描述

  1. cpu目录:该目录下包含一些依赖具体处理器架构的代码,目前主流的处理器架构主要有sparc、x86和zero,其中x86又最为常见,在涉及到相关源代码实现时,只讲x86目录下的源码实现。

  2. os目录:该目录下包含一些依赖操作系统的代码,主要的操作系统有基于linux内核的操作系统、基于unix的操作系统(posix)、windows和solaris。这里主要以linux为基础,所以在涉及到相关源代码实现时,只会讲解linux目录下的源码实现。

  3. os_cpu目录:该目录下包含一些依赖操作系统和处理器架构的代码,如linux_x86目录。linux_x86目录下包含的就是基于linux内核的操作系统和x86处理器架构相关的代码,也是本次系列文章要讲解的源代码实现。

  4. share目录:该目录下包含了独立于操作系统和处理器架构的代码,尤其是vm子目录,HotSpot主要的一些功能模块都包含在这个子目录下。下表介绍了vm目录下一些重要子目录的功能。

目录描述
adlc平台描述文件
asm汇编器
c1C1编译器,即client编译器
ci动态编译器的公共服务/从动态编译器到VM的接口
classfileClass文件解析和类的链接等
code机器码生成
compiler调用动态编译器的接口
gc_implementationGC的具体实现
gc_interfaceGC接口
interpreter解释器,包括“模板解释器”(官方版在用)和“C++解释器”(官方版不在用,因为太慢了,Jdk早期是用的这个)
jfrJVM 内置的基于事件的JDK监控记录框架
libadt抽象数据结构
memory内存管理
oopsJVM内部对象表示
optoserver编译器(又称“C2”或“Opto”)
precompiled这个文件夹就一个precompiled.hpp文件,里面包括vm子目录中所有涉及的头文件,可以想像成java中的import导入头文件
primsHotSpot VM的对外接口,包括部分标准库的native部分和JVMTI实现
runtime运行时支持库(包括线程管理、编译器调度、锁、反射等)
services主要是用来支持JMX之类的管理功能的接口
shark基于LLVM的JIT编译器
utilities工具类库

后续将通过抖音视频/直播的形式分享技术,由于前期要做一些准备和规划,预计2024年6月开始,欢迎关注,如有需要或问题咨询,也可直接抖音沟通交流。
在这里插入图片描述

  • 29
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多栖码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值