1.JVM的整体结构,JAVA代码的执行流程,JVM的生命周期
1.JVM的整体结构
JVM整体上可以被分为3层,如下图所示,分为上中下层。(针对HotSPot虚拟机)。
上层:JVM是用来解释执行字节码文件的,所以上层的入口是Class file。类装载子系统Class Loader来会将字节码文件加载到内存中生成一个大的Class对象。
中层:中层是运行时数据区Runtime Data area。包含五个部分:方法区,Java栈,本地方法栈,堆,程序计数器。其中方法区,堆是被多个线程共享的。Java栈,本地方法栈,程序计数器每个线程独有。
下层:执行引擎。将class文件加载到内存中以后,执行引擎负责执行代码。执行引擎会将高级语言翻译成机器指令。
2.JAVA代码的执行流程
如下图,Java首先经过Java编译器,被编译成字节码文件。然后被加载到JVM中。最后被执行引擎翻译成机器指令并执行。现在的虚拟机都主要采用解释执行和编译执行两者并存的方式来实现执行引擎。编译执行是将热点代码(也就是经常执行的代码)翻译成机器指令,并且缓存起来,下次要用的时候,直接取,就不用再翻译了,大大提高了效率。
3.JVM的生命周期
JVM的生命周期分为JVM的启动,运行,停止。