Java 虚拟机 (JVM)是一个引擎,它提供运行时环境来驱动 Java 代码或应用程序。它将 Java 字节码转换为机器语言。JVM 是 Java 运行时环境 (JRE) 的一部分。在其他编程语言中,编译器为特定系统生成机器代码。但是,Java 编译器为称为 Java 虚拟机的虚拟机生成代码。

这是 JVM 的工作原理

首先,Java 代码被编译成字节码。这个字节码在不同的机器上被解释

在主机系统和 Java 源代码之间,字节码是一种中介语言。

Java中的JVM负责分配内存空间。

在本 JVM 教程中,您将学习

  • JVM架构
  • 软件代码编译和执行过程
  • C代码编译和执行过程

JVM架构

Java 虚拟机架构

1) 类加载器

类加载器是用于加载类文件的子系统。它执行三个主要功能,即。加载、链接和初始化。

2) 方法区

JVM 方法区存储类结构,如元数据、常量运行时池和方法代码。

3) 堆

所有的Objects及其相关的实例变量和数组都存储在堆中。该内存是通用的,并且在多个线程之间共享。

4)JVM语言栈

Java 语言堆栈存储局部变量,它是部分结果。每个线程都有自己的 JVM 堆栈,在创建线程时同时创建。每当调用方法时都会创建一个新框架,并在方法调用过程完成时将其删除。

5) PC 寄存器

PC寄存器存储当前正在执行的Java虚拟机指令的地址。在 Java 中,每个线程都有其单独的 PC 寄存器。

6) 原生方法栈

本机方法栈保存本机代码的指令依赖于本机库。它是用另一种语言而不是 Java 编写的。

7) 执行引擎

它是一种用于测试硬件、软件或完整系统的软件。测试执行引擎从不携带任何关于被测产品的信息。

8) 原生方法接口

本机方法接口是一个编程框架。它允许在 JVM 中运行的 Java 代码被库和本机应用程序调用。

9) 原生方法库

本机库是执行引擎所需的本机库(C、C++)的集合。

软件代码编译和执行过程

为了编写和执行软件程序,您需要以下内容

1) 编辑器 ——要输入你的程序,可以使用记事本

2) 编译器 – 将您的高级语言程序转换为本机机器代码

3) 链接器 ——将主程序中不同的程序文件引用组合在一起。

4) 加载器 ——将文件从您的辅助存储设备(如硬盘、闪存驱动器、CD)加载到 RAM 中以供执行。执行代码时会自动完成加载。

5) 执行– 由您的操作系统和处理器处理的代码的实际执行。

在此背景下,请参考以下视频并了解 JVM(Java 虚拟机)的 JVM 内部工作和架构。

C代码编译和执行过程

了解Java中的Java编译过程。让我们先快速浏览一下 C 中的编译和链接过程。

假设在 main 中,您调用了两个函数 f1 和 f2。主函数存储在文件 a1.c 中。

函数 f1 存储在文件 a2.c 中

函数 f2 存储在文件 a3.c 中

所有这些文件,即 a1.c、a2.c 和 a3.c,都被提供给编译器。其输出是相应的目标文件,即机器代码。

下一步是在链接器的帮助下将所有这些目标文件集成到一个 .exe 文件中。链接器会将所有这些文件组合在一起并生成 .exe 文件。

在程序运行期间,加载程序会将 a.exe 加载到 RAM 中以供执行。推荐相关阅读:《裸机服务器与虚拟化》

作者 admin

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注