Java编译器输入的指令流是基于栈的指令集架构
同样执行2+3这种逻辑操作,其指令分别如下:
基于栈的计算流程
iconst_2 //常量2入栈
istore_1
iconst_3 // 常量3入栈
istore_2
iload_1
iload_2
iadd //常量2/3出栈,执行相加
istore_0 // 结果5入栈
基于寄存器的计算流程
mov eax,2 //将eax寄存器的值设为1
add eax,3 //使eax寄存器的值加3
java.lang.System#exit
,最终调用了native方法世界上第一款虚拟机,只使用了解释器,性能不高
最快的JVM,因为只使用了JIT,性能好。但是启动慢,需要编译所有字节码为本地机器指令。不过它专注于服务端,启动慢也就无所谓了。