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-dev
apt install libcups2-dev
apt install libx11-dev libxext-dev libxrender-dev libxrandr-dev libxtst-dev libxt-dev
apt install libasound2-dev
apt install libffi-dev
apt install autoconf
sudo apt-get install openjdk-11-jdk
bash configure --enable-debug --with-jvm-variants=server
make images