JVM前置知识
1.JVM是一个字节码指令执行引擎
1)类似计算机的cpu,cpu就是机器指令的执行引擎
2)注意:JVM是编译后的class文件指令的执行引擎,而不是java文件源程序的执行引擎
3)所以,JVM可以服务于Java以外的编程语言,只要编程语言编译出来的指令文件符合字节码指令规范
2.CPU和JVM的关系
1)CPU是机器指令的执行引擎
2)JVM是C语言写的,JVM也可以理解为C程序,其运行之前需要编译成机器指令
3)启动JVM,就可理解为CPU执行机器指令(JVM编译后的机器指令)
3.机器指令和字节码指令的关系
1)机器指令是CPU解释和执行
2)字节码指令是JVM解释和执行
3)JVM解释的方式:把每一个字节码指令映射成一组机器指令
3.JVM如何执行字节码指令
1)在CPU按顺序执行机器指令时,每次执行前都会记录当前指令到CS:IP寄存器
2)但执行到某条机器指令时,指令作用是修改CS:IP寄存器的值,则CPU跳到另一段机器指令去执行(JVM运行字节码指令的关键)
3)JVM编译之后就是机器指令,启动JVM,就是CPU执行JVM编译过后的机器指令
4)启动的JVM能执行相应的脚本命令,例如字节码运行脚本:java Test.class(JVM执行字节码指令的入口)