jvm15版本源码阅读准备说明
- 1 jvm执行java class文件的执行流程
- 2 jvm源码整体结构
- 3 调试
- 4 关于make目录的说明
之前已规划过,在大数据相关源码阅读解析完之后会进行jvm源码的分析,这里给出jvm源码的阅读之前的准备.
调试的主要ide工具为clion,最新版本的,其余的会在编译章节中详细给出.
1 jvm执行java class文件的执行流程
Jvm主要是用c++编写的,外加少量的c和汇编,那么首先需要弄清楚的就是jvm是如何执行class文件的.
Jvm首先把java源码翻译成class文件,也就是二进制的java字节码,这些字节码这些字节码对应着已经编译好的机器码,具体调用过程如下:
1 首先执行字节码中的方法调用,每个java方法都对应着一个方法调用的字节码
2 方法中的所有字节码都被替换为机器码(通过函数指针实现),压入方法栈中,这些指令逐步执行
3 执行完毕退栈,回收栈内存和堆内存
可见,jvm虚拟机扮演了一个模拟方法调用的过程,所以本质上jvm就是机器指令层面的方法调用.
2 jvm源码整体结构
Jvm首先需要经过编译,编译后导入clion中,工程结构如下所示
Build是构建后的部分,包含了可执行文件,进入后其具体结构如下
主要工程为hotspot和jdk,也就是jvm和java开发工具,这两个是核心目录.
3 调试
使用clion进行调试,默认的调试引擎是lldb.Cpp的调试和java类似,不过这里需要借助可执行文件,配置文件如下所示
这里的可执行文件就是编译后的java,也就是常在bash命令行中的那个java命令,在编译部分会详细说明这部分调试的设置.
4 关于make目录的说明
目前cpp的编译都是使用的cmake,非常方便,类似java的maven,也是一个构建工具,但是需要makefile文件,或者是gmk的后缀文件,就是GUN-makefile的缩写.这些配置文件都在make目录中,有很多,整体上看还是清晰明了的,在源码解析时会首先从这部分开始.