【JVM】001-JVM的运行机制
1、JVM(Java Virtual Machine)是用于运行 Java 字节码的虚拟机。
2、JVM 包括:一套字节码指令集 + 一组程序寄存器 + 一个虚拟机栈 + 一个虚拟机堆 + 一个方法区 + 一个垃圾回收器。
3、JVM 运行在操作系统上,不与硬件设备直接交互。
4、Java 源文件在通过编译器之后被编译成相应的 .Class
文件(字节码文件),.Class
文件又被 JVM 中的解释器编译成机器码在不同的操作系统(Windows、Linux、Mac)上运行。
5、每种操作系统的解释器都是不同的,但基于解释器实现的虚拟机是相同的,这也是 Java 能够跨平台的原因。
6、在一个 Java 进程开始运行后,虚拟机就开始实例化了,有多个进程启动就会实例化多个虚拟机实例。
7、进程退出或关闭,则虚拟机实例消亡,在多个虚拟机实例之间不能共享数据。
8、Java 程序的具体运行过程:
(1)Java 源文件被编译器编译成字节码文件;
(2)JVM 将字节码文件编译成相应操作系统的机器码;
(3)机器码调用相应操作系统的本地方法库执行相应的方法。
9、Java 虚拟机包括:类加载器子系统(Class Loader SubSystem)、运行时数据区(Runtime Data Area)、执行引擎和本地接口库(Native Interface Library)。
10、本地接口库通过调用(操作系统的)本地方法库(Native Interface Library)与操作系统交互。
11、类加载器子系统用于将编译好的 .Class
文件加载到 JVM 中。
12、运行时数据区用于存储在 JVM 运行过程中产生的数据,包括程序设计器、方法区、本地方法区、虚拟机栈和虚拟机堆。
13、执行引擎包括即时编译器和垃圾回收器,即时编译器用于将 Java 字节码编译成具体的机器码,垃圾回收器用于回收在运行过程中不再使用的对象。
14、本地接口库用于调用操作系统的本地方法库完成具体的指令操作。