Skip to content

Java 的运行机制

前置知识

在介绍 Java 的运行机制前,我们先来简单了解一下计算机组成原理。

计算机由软件和硬件设备组成,其中硬件分为外部设备和主机。

  • 外部设备包含鼠标、键盘、音响等
  • 主机则包含CPU(中央处理器)、主板、内存硬盘、显卡、声卡等

这里我们详细说一下内存和硬盘:

  • 内存存储空间小,硬盘存储空间大
  • 内存的数据存取速度快,硬盘的数据存取速度慢
  • 内存属于临时性存储,如果计算机断电,内存中的信息就会丢失。硬盘属于永久性存储,不受断电影响

正文

在了解完这些基本知识后,我们通过编写一段 Java 程序来描述 Java 的运行机制,内容如下:

  • 在硬盘上创建一个源文件 Test.java
  • 编写 Java 程序
java
// Test.java
public class Test {
  public static void main(String[] args) {
    int x = 10;
    int[] array = new int[3]{1, 2, 3};
  }
}
  • 在终端运行 javac Test.java 命令进行代码编译

    • 此时 JVM 会开辟一块内存空间,用于将源文件 Test.java 编译成字节码文件 Test.class
  • 在终端运行 java Test 命令执行 Java 程序

    • 在运行前有一个默认执行过程,JVM 调用类加载器(class loader)将硬盘中的字节码文件 Test.class 中的信息加载到内存中
    • 运行java Test 命令,实际上就是运行内存中的类信息
    • Java 程序中所有的运行都在栈内存中,并且从主方法开始运行
  • 主方法中声明了一块变量空间 int x,并且从常量池中复制常量10并存到变量空间int x

  • 接着声明另一块变量空间 int[] array,并且创建数组对象,数组对象长度为3,成员分别为1,2,3,然后将数组对象第一个成员的地址存储到变量空间int[] array

image-20230310110824916