多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# Java 虚拟机基础 > 原文: [https://javabeginnerstutorial.com/core-java-tutorial/java-virtual-machine-basics/](https://javabeginnerstutorial.com/core-java-tutorial/java-virtual-machine-basics/) JVM 是 Java 虚拟机的缩写形式。 它是一个 Java 字节码处理引擎,它将 Java 字节码转换为机器语言,然后由机器(计算机)执行。 Java 字节码是 Java 与必须在其上执行程序的机器之间的中间语言,并且当 JVM 将 Java 字节码处理为机器语言时,可以执行此执行。 **JVM 简介** 让我们用简单的词来理解 Java 字节码,JVM 和 Machine 的概念。 创建 Java 程序时,将生成扩展名为.java 的文件。 该文件可能包含几个属性,这些属性包括但不限于类,方法,对象等。 然后,使用 Java 编译器编译该.java 文件,该编译器将生成`.class`文件(也称为 Java 字节码)。 JVM 读取此`.class`文件,理解其代码,将代码解释为机器语言,然后执行该文件。 **JVM 平台独立吗?** Java 由于具有 JVM 而与平台无关,但是 JVM 与平台有关。 必须在其上执行 Java 代码的计算机必须安装了 JVM。 根据必须在其上执行 Java 字节代码的机器,JVM 解释`.class`文件并生成另一种机器语言,该语言仅对该机器可以理解。 不同的计算机可能具有不同的操作系统,例如 Windows,Mac,Unix 或 Linux。 如果没有 JVM,这些操作系统将无法解释 Java 字节码,因为操作系统只能理解机器语言。 JVM 将 Java 字节码转换为机器语言,并使操作系统可以理解以执行该代码。 这意味着 Java 可以在任何计算机上运行,​​但是它需要在该计算机上安装 JVM。 **JVM 的组件** 在解释和执行 Java 字节码时,JVM 使用了几个组件,例如栈,寄存器,垃圾收集器等。 让我们看一下它的一些组成部分: * **栈**:它是方法参数和局部变量的仓库。 可以在指向寄存器不同部分的寄存器的帮助下对其进行操作。 * **寄存器**:JVM 中有许多寄存器,例如 Vars,Frame,Program Counter 和 OpTop。 Vars 寄存器指向当前方法正在使用的局部变量。 框架寄存器指向执行环境,这是用于栈的环境。 Optop 指向操作数栈,在其中执行字节码指令。 程序计数器寄存器指向保存字节码的“方法”区域。 * **方法区域**:它是 Java 字节码的占位符。 该区域在所有线程之间共享,因此可以确保同步。 * **垃圾收集器**:它是 JVM 的组件,用于存储实际的 Java 对象。 请注意,Java 对象的引用存储在栈中,而实际对象存储在垃圾收集器中。 Java 使用垃圾回收来释放分配给不同对象的内存,这与 C/C++ 不同,在 C/C++ 中,运算符用于释放内存。