在开始之前,有必要先给大家讲讲Java架构。
用 C 和 C++ 等编程语言编写的代码被编译为特定于操作系统的机器代码,这类编程语言被称为编译语言。
但在 JavaScript 或 Python 等编程语言中,计算机无需编译即可直接执行代码,这些被称为解释语言。
Java 的特别之处在于,它结合了编译和解释,因此,在 Java 中,源代码首先被编译为带有字节码的类文件,然后这个类文件用解释器或 JIT 编译器执行。

但是,JVM 不是单独安装的,也不是您可以下载和安装的东西,JVM 总是带有 JDK 或 JRE。
让我们看一下 Java 架构以清楚地理解这一点,Java架构中有03个主要组件:
JDK 是开发 Java 应用程序所需的软件开发工具包,包含 JRE 和一些开发工具,如 JavaDoc、Javac、Java Debugger 等。
Java 运行时环境 (JRE)。
Java 虚拟机 (JVM)。
JRE 是 JDK 的一部分,它创建了一个运行 Java 应用程序的环境,JRE 包含 Java 类库、Java 虚拟机 (JVM) 以及运行 Java 应用程序所需的其他组件。

JVM 代表 Java 虚拟机,本质上是一个虚拟机或运行时环境,允许 Java 程序在多个设备和操作系统上运行和操作。
Java 程序不能在没有 JVM 支持的机器上运行,它是 Java 运行时环境 (JRE) 的一个组成部分。JVM 具有许多共同运行 Java 程序的规范。它本质上是平台相关的,即每个操作系统都有不同的JVM。
JVM有三个概念:
规范是正式描述 JVM 实现所需内容的文档,拥有单一规范可确保所有实现都是可互操作的。JVM 实现是满足 JVM 规范要求的计算机程序。JVM 的实例是在执行编译成 Java 字节码的计算机程序的进程中运行的实现。
主要有四个流程:

类加载器读取“. class”文件,生成相应的二进制数据并保存在方法区,加载“ .class”文件后,JVM 在堆内存中创建一个 Class 类型的对象来表示该文件。
确保.class文件的正确性,即检查该文件是否正确格式化并由有效的编译器生成,如果验证失败,我们会得到运行时异常java.lang.VerifyError,此活动由组件 ByteCodeVerifier 完成,一旦这个活动完成,那么类文件就可以编译了。
执行引擎执行“ .class”(字节码),它逐行读取字节码,使用各种内存区域中存在的数据和信息并执行指令。
提供运行时环境以支持各种应用程序。
在程序执行期间必须存在各种运行时数据区域,当 JVM 首次启动时,会生成其中的几个对象。
可以构造和销毁特定于线程的对象,线程特定的对象分别与线程一起生成和销毁,通常用于跟踪指令。
JVM 总共分为五个子区域:
1995 年,JVM 引入了两个革命性的概念,这些概念后来成为现代软件开发的标准:“一次编写,随处运行”和自动内存管理。
本文详细介绍了JVM的概念、工作原理,希望本文对您能够有所帮助,有任何疑问,可以在下方评论区与我讨论。