jvm 漫谈 笔记

时间:2023-12-24 22:35:31

1.Jvm到底是什么呢?

Jvm其实就是模拟一台计算机,每种cpu都有自己的指令集,jvm自己设置一套指令集,这就是我满看的的字节码,然后jvm需要执行这些字节码,其实这些字节码最终直接对应到cpu的指令集,或者首先对应一段c++代码,然后c++代码再转化成指令集合。

2.

public class EvalOrderDemo {

public static void main(String[] args) {

int[] arr = new int[1];

int a = 1;

int b = 2;

arr[0] = a + b;

}

}

Arr[0]=a+b;的字节码如下

// 左子树:数组下标

// a[0]

aload_1   //将第一个局部变量值入操作数栈,此值指的是数组的引用,可参考jvm规范

iconst_0   //把操作数0入操作数栈

// 右子树:加法

// a

iload_2    //把第二个局部变量a的值入1栈

// b

iload_3 //把第三个变量b的值2入栈

// +

iadd  //还行加操作后,结果存在栈中

// 根节点:赋值

iastore  //     将栈顶int型数值存入指定数组的指定索引位置