1、Java虚拟机整体架构图
简略版如下:
这里面的字节码文件是指经过javac指令编译过后的.class文件。
2、Java代码的执行过程
首先,Java源代码(xxx.java)文件,通过Java编译器,编译后生成对应的字节码文件(xxx.class)。.class字节码文件经过类加载器加载后,由执行引擎中的解释器翻译字节码解释执行,或者由JIT即时编译器编译执行。
3、汇编语言、机器语言、高级语言的关系
4、JVM的生命周期
- 虚拟机的启动:
通过引导类加载器bootstrap classloader创建一个初始类(Initial Class)来完成的,这个类是由虚拟机的具体实现指定。
- 虚拟机的执行:
执行一个Java程序时,真正执行的是一个Java虚拟机进程。
- 虚拟机的退出:
- 程序正常执行结束;
- 执行过程遇到异常或错误而异常终止;
- 操作系统错误导致JVM进程终止;
- 执行了Runtime类或System类的exit方法、Runtime类的halt方法,并且Java安全管理器运行这次exit或halt操作。
- JNI(Java Native Interface)规范描述了用JNI Inocation API来加载或卸载JVM时,JVM退出的情况。
5、hotspot虚拟机
JVM有很多种,我们默认讨论的事hotspot虚拟机,这是使用最多的虚拟机,也是JDK默认使用的虚拟机。