Java 虚拟机基础

原文: 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++ 中,运算符用于释放内存。