JVM 作为 Java 程序执行的核心引擎,主要包括以下四个核心子系统:

一、类加载子系统(ClassLoader Subsystem)

  1. 加载(Loading)
    负责加载 .class 字节码文件到内存中
  2. 链接(Linking)
    • 验证:校验字节码安全性
    • 准备:为静态变量分配内存空间
    • 解析:将符号引用转为直接引用
  3. 初始化(Initialization)
    执行 static 代码块与静态变量赋值

二、运行时数据区(Runtime Data Areas)

  1. 方法区(Method Area)
    存储类结构信息(如常量池、静态变量等)
  2. 堆区(Heap)
    所有对象实例分配的内存区域
  3. 栈区(Stack)
    • Java 虚拟机栈:存储方法调用的栈帧
    • 本地方法栈:支持 Native 方法调用
  4. 程序计数器(PC Register)
    保存当前线程执行指令的地址
  5. 本地内存(Native Memory)
    通过 JNI 调用的外部资源区域
flowchart TD
    A[Class File] --> B[ClassLoader]
    B --> C[Method Area]
    C --> D[Java Stack]
    D --> E[Execution Engine]

https://www.iqiyi.com/v_lva5uqtqhc.html
https://www.iqiyi.com/v_l0pbqhl05c.html
https://www.iqiyi.com/v_111a08ienyc.html
https://www.iqiyi.com/v_27a6ixqp94s.html

三、执行引擎(Execution Engine)

  1. 解释器(Interpreter)
    逐行解释执行字节码
  2. 即时编译器(JIT Compiler)
    将热点代码编译为本地机器码
  3. 垃圾回收器(GC)
    自动管理堆内存:标记-清除、复制、分代收集等算法

四、本地接口(JNI)

提供与操作系统原生方法(如 C/C++ 库)的交互能力

技术特性补充

  • 栈式执行架构:所有计算操作均通过操作数栈完成
  • 自适应优化:通过方法调用计数器触发 JIT 编译
  • 内存屏障机制:通过 volatile 等关键字保证可见性
  • https://www.iqiyi.com/v_lva5uqtqhc.html
    https://www.iqiyi.com/v_l0pbqhl05c.html
    https://www.iqiyi.com/v_111a08ienyc.html
    https://www.iqiyi.com/v_27a6ixqp94s.html

此架构通过各组件协同工作,实现 Java “一次编译,处处运行” 的核心能力。

Logo

openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构

更多推荐