【JAVA八股文第一章-JVM内存模型】 📅 2026/7/1 4:01:26 JVM 内存模型详解从入门到理解执行原理一、什么是 JVM 内存模型JVMJava Virtual Machine内存模型本质上就是Java 程序在运行时数据在内存中的划分方式以及各部分的作用机制理解 JVM 内存模型是学习 Java 高级内容如 GC、性能调优、并发的基础。二、JVM 内存整体结构JVM 运行时内存分为两大类✅ 1. 线程私有每个线程独有程序计数器PC Register虚拟机栈Stack本地方法栈Native Stack✅ 2. 线程共享所有线程共享堆Heap方法区Method Area三、线程私有区域详解1️⃣ 程序计数器PC Register作用记录当前线程执行到哪一条字节码指令特点每个线程独立用于线程切换恢复执行位置不会发生内存溢出OOM2️⃣ 虚拟机栈Stack核心作用管理方法的调用和执行过程方法执行流程方法调用 → 创建栈帧 → 入栈 方法结束 → 栈帧出栈⭐ 栈帧结构重点每个方法对应一个栈帧包含✔ 局部变量表Local Variables存储基本类型的值 / 对象引用使用 slot槽位管理❗ 不存变量名✔ 操作数栈Operand Stack用于计算、-、*、/JVM 是“基于栈的计算模型”示例intcab;底层类似load a load b add store c✔ 动态链接Dynamic Linking将方法调用与方法区中的方法关联✔ 方法返回地址Return Address方法执行结束后返回到调用位置⚠️ 栈相关异常StackOverflowError递归过深OutOfMemoryError栈扩展失败3️⃣ 本地方法栈Native Stack作用为 native 方法C/C服务例如System.currentTimeMillis();底层由本地方法实现。四、线程共享区域详解4️⃣ 堆Heap⭐最重要核心作用存放对象实例特点JVM 中最大的一块内存所有线程共享垃圾回收GC主要发生在这里✔ 堆的结构分代模型新生代Young Generation Eden SurvivorS0 / S1 老年代Old Generation✔ 对象生命周期new → Eden 存活 → Survivor 多次存活 → 老年代⚠️ 常见异常java.lang.OutOfMemoryError: Java heap space5️⃣ 方法区Method Area核心作用存储类的信息和方法代码✔ 存储内容类结构信息方法字节码常量池静态变量✔ JDK 8 之后方法区实现为Metaspace元空间特点使用本地内存不在堆中五、执行流程详解重点来看一段代码publicstaticvoidmain(String[]args){inta10;PersonpnewPerson();}执行过程① 类加载Person.class → 方法区② main 方法入栈栈中创建 main 栈帧③ 执行 int a 10局部变量表 slot[0] 10④ 执行 new Person()堆 创建 Person 对象 栈 p 对象地址引用⑤ 程序计数器始终记录当前执行位置六、核心关系总结必须掌握栈局部变量 → 指向 → 堆对象 方法区 → 定义类和方法七、面试高频问题总结✔ 对象存在哪 堆✔ 引用存在哪 栈局部变量表✔ 方法在哪 方法区✔ 方法如何执行 通过栈栈帧✔ 为什么会 OOM 堆 或 方法区内存不足八、终极总结方法区定义类、方法 堆数据对象 栈执行方法运行过程九、结语JVM 内存模型是理解 Java 底层机制的关键基础想学 GC → 必须懂堆想学并发 → 必须懂内存结构想调优 → 必须懂整个运行模型