1、Java虚拟机整体架构图

image.png
简略版如下:
image.png
这里面的字节码文件是指经过javac指令编译过后的.class文件。

2、Java代码的执行过程

首先,Java源代码(xxx.java)文件,通过Java编译器,编译后生成对应的字节码文件(xxx.class)。.class字节码文件经过类加载器加载后,由执行引擎中的解释器翻译字节码解释执行,或者由JIT即时编译器编译执行。
JVM与Java体系架构 - 图3

3、汇编语言、机器语言、高级语言的关系

image.png

4、JVM的生命周期

  1. 虚拟机的启动:

通过引导类加载器bootstrap classloader创建一个初始类(Initial Class)来完成的,这个类是由虚拟机的具体实现指定。

  1. 虚拟机的执行:

执行一个Java程序时,真正执行的是一个Java虚拟机进程。

  1. 虚拟机的退出:
    1. 程序正常执行结束;
    2. 执行过程遇到异常或错误而异常终止;
    3. 操作系统错误导致JVM进程终止;
    4. 执行了Runtime类或System类的exit方法、Runtime类的halt方法,并且Java安全管理器运行这次exit或halt操作。
    5. JNI(Java Native Interface)规范描述了用JNI Inocation API来加载或卸载JVM时,JVM退出的情况。

5、hotspot虚拟机

JVM有很多种,我们默认讨论的事hotspot虚拟机,这是使用最多的虚拟机,也是JDK默认使用的虚拟机。