Java JVM 零基础入门 一、到底什么是 JVM一句话讲透JVM 全称 Java 虚拟机简单理解一台专门用来运行 Java 程序的虚拟电脑。我们写的 Java 代码电脑本身是看不懂的真正执行代码的不是操作系统而是 JVM。同时它也是 Java跨平台的核心Windows 有 Windows 版 JVMLinux 有 Linux 版 JVMMac 有 Mac 版 JVM代码只需要写一次编译成统一的.class字节码文件就能在任意装有 JVM 的系统上运行。一次编写到处运行靠的就是 JVM。二、JVM 整体架构三大核心模块全局框架整个 JVM 内部结构非常规整宏观上就分为三大模块。Java 程序从启动、加载、运行、内存分配、垃圾回收全部都在这三大模块中完成。完整运行链路记住一句话类加载子系统 → 运行时数据区内存 → 执行引擎下面逐个通俗讲解只讲作用不讲细节。2.1 类加载子系统程序的“搬运工”我们写的 Java 代码编译后会生成.class字节码文件存放在硬盘上。硬盘上的文件无法直接运行必须加载到内存。类加载子系统的唯一作用把硬盘的 class 文件安全搬运、加载到 JVM 内存中。它会简单做三件事加载读取 class 文件进内存校验检查文件格式是否合法、安全初始化给类的静态变量、默认数据完成初始化你不用记双亲委派、不用记加载细节入门只需要知道所有代码想运行必须先经过类加载器加载。2.2 运行时数据区JVM 的“内存仓库”这是 JVM 最核心的区域也是大家口中常说的JVM 内存模型。可以通俗理解为JVM 专门划分出来的几块独立内存空间用来存放代码、对象、变量、线程信息。总共分为 5 个区域我只讲各自用途不深挖底层1. 程序计数器记录当前线程代码执行到第几行线程私有空间极小不会内存溢出。2. 虚拟机栈每个线程独占一份存放方法执行信息、局部变量。方法调用、入栈出栈都在这里。栈深度过大会报栈溢出错误StackOverflowError。3. 本地方法栈专门给 Java 调用系统底层native本地方法使用日常开发几乎感知不到。4. 堆内存最重要整个 JVM 最核心的区域。所有new 出来的对象、数组全部存在堆里全局线程共享。我们常说的GC 垃圾回收主要回收的就是堆内存。5. 方法区JDK8 元空间存放类结构信息、静态变量、常量、方法元数据等全局固定信息。JDK8 之后彻底废弃永久代使用元空间 Metaspace。2.3 执行引擎真正干活的“执行者”代码加载进内存之后谁来运行答案就是执行引擎。它是 JVM 的“CPU”负责真正执行字节码主要包含三部分能力1. 解释器逐行解释执行字节码启动快适合短时执行代码。2. JIT 即时编译器针对频繁执行的热点代码编译成机器码缓存大幅提速是 Java 越跑越快的核心。3. GC 垃圾回收器自动清理堆内存中无效、不再使用的对象释放内存防止程序内存溢出。三、全局串联一段代码的完整运行流程我帮大家把整个 JVM 流程完整串起来看完彻底通透我们写的.java源代码编译为.class字节码文件类加载子系统将 class 文件加载进 JVM 内存数据、对象、方法信息分别存入运行时数据区的各个内存区域执行引擎解释/编译字节码执行程序逻辑程序运行中GC 自动清理无效对象回收内存程序结束JVM 释放所有资源加载 → 存内存 → 执行 → 自动回收这就是 JVM 的全部工作。四、新手必背JVM 核心框架总结极简版不用记复杂知识点入门只需要记住这 5 句话JVM 是 Java 专属虚拟机是 Java 跨平台的核心类加载子系统负责把代码加载进内存运行时数据区JVM 所有内存的分配区域对象存在堆里执行引擎负责跑代码、热点提速、垃圾回收GC 主要作用于堆内存自动帮我们释放无用内存