JVM(Java Virtual Machine, Java虚拟机)是用于运行Java字节码的虚拟机,包括一个类加载器子系统、运行时数据区、执行引擎和本地接口库。其中,运行时数据区包括程序计数器、Java虚拟机栈、Java堆、方法区和本地方法栈。执行引擎包括即时编译器和垃圾回收器。本地接口库通过调用本地方法库与操作系统交互。JVM运行在操作系统之上,不与硬件设备直接交互。
在一个Java进程开始运行后,虚拟机就开始实例化了,有多个进程就会实例化多个虚拟机实例。如果进程退出或者关闭,则虚拟机实例消亡,多个虚拟机实例之间不能共享数据。Java程序的运行过程如下:
①Java源文件被编译器编译成字节码文件
②JVM将字节码文件编译成相应操作系统的机器码
③机器码调用相应操作系统的本地方法库执行相应的方法
其中:
①类加载器子系统用于将编译好的.Class文件加载到JVM中
②运行时数据区用于存储在JVM运行过程中产生的数据
③执行引擎中的即时编译器用于将Java字节码编译成具体的机器码,垃圾回收器用于回收在运行过程中不再使用的对象。
④本地接口库用于调用操作系统的本地方法库完成具体的指令操作。