JVM

stateDiagram-v2  x.java --> javac  javac --> x.class  x.class --> ClassLoader  state jvm {    ClassLoader --> 字节码解释器    java类库 --> ClassLoader    ClassLoader --> JIT即时编译器    JIT即时编译器 --> 执行引擎    字节码解释器 --> 执行引擎  }  执行引擎 --> 系统硬件

JVM是一种规范

JDK14:https://docs.oracle.com/javase/specs/jvms/se14/jvms14.pdf

常见JVM实现

越过操作系统的虚拟机:

其他:

未来的趋势

JDK JRE JVM

批注 2020-07-10 090055

JVM 体系结构

202010510539

基于栈的架构:

执行引擎的架构:

屏幕截图 2020-10-05 103533

执行引擎的执行过程:

偏移量指令说明
0:iconst1常数1入栈
1:istore_1将栈顶元素移入本地变量1存储
2:iconst2常数2入栈
3:istore2将栈顶元素移入本地变量2存储
4:i1oad1本地变量1入栈
5:i1oad2本地变量2入栈
6:iadd弹出栈顶两个元素相加
7:bipush将10入栈
9:imul栈顶两个元素相乘
10:istore3栈顶元素移入本地变量3存储
11:return返回

方法调用:

执行方法调用指令时 会创建一个新栈帧 这个栈帧会存储传递过来的参数

编译JDK

apt install libfreetype6-devapt install libcups2-devapt install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-devapt install libasound2-devapt install libffi-devapt install autoconf
sudo apt-get install openjdk-11-jdk
bash configure --enable-debug --with-jvm-variants=server
make images