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中,工程结构如下所示

jvm 和mysql源码 jvm源码阅读_java


  Build是构建后的部分,包含了可执行文件,进入后其具体结构如下

jvm 和mysql源码 jvm源码阅读_java_02


  主要工程为hotspot和jdk,也就是jvm和java开发工具,这两个是核心目录.

3 调试

  使用clion进行调试,默认的调试引擎是lldb.Cpp的调试和java类似,不过这里需要借助可执行文件,配置文件如下所示

jvm 和mysql源码 jvm源码阅读_jvm_03


  这里的可执行文件就是编译后的java,也就是常在bash命令行中的那个java命令,在编译部分会详细说明这部分调试的设置.

4 关于make目录的说明

  目前cpp的编译都是使用的cmake,非常方便,类似java的maven,也是一个构建工具,但是需要makefile文件,或者是gmk的后缀文件,就是GUN-makefile的缩写.这些配置文件都在make目录中,有很多,整体上看还是清晰明了的,在源码解析时会首先从这部分开始.