JVM 是什么:组成、运行流程与整体架构
2026/6/6 15:46:55 网站建设 项目流程

Java 程序能做到“一次编写,到处运行”,靠的不是源代码本身跨平台,而是 JVM 把.class字节码屏蔽在不同操作系统和硬件之上。

一句话概括:JVM 是 Java 字节码的运行环境,它负责加载 class 文件、管理运行时内存、执行字节码,并通过垃圾回收机制自动回收不再使用的对象。

把 JVM 放到整个 Java 程序运行链路里看,会更容易理解:

Java 源代码

javac 编译

class 字节码文件

JVM 加载并执行

操作系统指令

CPU 和内存

源代码先被编译成平台无关的字节码,不同平台安装各自对应的 JVM,再由 JVM 把字节码翻译、解释或编译成底层机器能执行的指令。

JVM 解决了什么问题

如果没有 JVM,Java 程序就需要像 C 或 C++ 一样,面向不同操作系统分别编译、适配和管理内存。JVM 把这些复杂度收到了虚拟机内部。

能力作用
字节码执行让 Java 程序以.class形式运行
跨平台同一份字节码可以交给不同平台的 JVM 执行
自动内存管理对象分配在堆上,由垃圾回收器自动回收
安全校验类加载时会校验字节码是否合法
运行期优化热点代码可以被 JIT 编译器优化成本地机器码

所以 JVM 不是一个单纯的“解释器”,它更像一套完整的运行时系统。

JVM 由哪些部分组成

JVM 的核心组成可以分成四块:类加载子系统、运行时数据区、执行引擎、本地接口。

运行时数据区

程序计数器

虚拟机栈

本地方法栈

方法区

class 字节码文件

类加载子系统

运行时数据区

执行引擎

解释器

JIT 编译器

垃圾回收器

本地方法接口

本地方法库

这几部分的职责分别是:

组成部分主要职责
类加载子系统.class文件加载到 JVM,并完成验证、准备、解析、初始化
运行时数据区管理程序运行时需要的内存空间
执行引擎执行字节码,包括解释执行和即时编译
垃圾回收器回收堆和方法区中不再使用的对象或类元数据
本地方法接口让 Java 调用 C、C++ 等本地方法

Java 程序的运行流程

一段 Java 代码从启动到执行,大致会经历下面这条链路:

启动 Java 程序

找到入口类

类加载器加载 class

验证字节码安全性

为类变量分配内存

符号引用转直接引用

执行静态变量和静态代码块

执行 main 方法

对象在堆中分配

方法调用产生栈帧

执行引擎解释或编译字节码

垃圾回收器回收无用对象

这个流程里有两个关键点:

  1. 类不是一开始全部加载,而是通常在第一次主动使用时加载和初始化。
  2. 对象主要分配在堆上,方法调用信息主要在线程自己的虚拟机栈里。

理解了这两个点,后面再看类加载、运行时数据区和垃圾回收,就不会散。

解释执行和 JIT 编译

JVM 执行字节码有两种主要方式:

执行方式说明特点
解释执行解释器逐条读取字节码并执行启动快,但长期运行性能一般
JIT 编译把热点代码编译成本地机器码前期有编译成本,长期运行性能更好

很多人会把 Java 简单理解成解释型语言,但 HotSpot JVM 并不是只解释执行。实际运行中,解释器先让程序快速启动;代码执行频率变高后,JIT 编译器会把热点方法编译成本地机器码,减少重复解释的成本。

字节码

解释器快速执行

是否成为热点代码

JIT 编译成本地机器码

后续直接执行优化后的机器码

JVM、JRE、JDK 的区别

面试里也经常顺手问 JVM、JRE、JDK 的区别。

JDK

JRE

JVM

Java 核心类库

javac 等开发工具

jmap jstack jstat 等诊断工具

名称含义面向谁
JVMJava Virtual Machine,执行字节码的虚拟机程序运行
JREJVM 加核心类库,能运行 Java 程序运行环境
JDKJRE 加开发、编译、诊断工具开发者

如果只是运行 Java 程序,JRE 理论上就够;如果要编译、打包、排查问题,需要 JDK。

面试回答模板

可以这样回答:

JVM 是 Java 字节码的运行环境,负责把.class文件加载到内存中并执行。它主要由类加载子系统、运行时数据区、执行引擎、本地方法接口和垃圾回收器组成。Java 源码先通过javac编译成字节码,类加载器把字节码加载进 JVM,运行时数据区负责分配堆、栈、方法区等内存,执行引擎通过解释器和 JIT 编译器执行字节码,垃圾回收器负责回收不再使用的对象。JVM 的价值主要是跨平台、自动内存管理和运行期优化。

小结

JVM 这块不要一上来背一堆名词。先抓住一条主线:

Java 源码编译成字节码,JVM 加载字节码,把运行时数据放进不同内存区域,再由执行引擎执行,并由垃圾回收器自动管理对象生命周期。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询