Java面试题更新 2026-08-05

请介绍 JVM 内存模型,说明它分为哪些区域,以及每个区域的作用。

技术原理JavaJVM

考察说明

考查对 JVM 运行时数据区划分及各自职责的理解。

回答思路

  1. 【回答框架 1】JVM 内存模型指运行时数据区,按线程共享与私有划分。线程共享区包括堆和方法区,线程私有区包括虚拟机栈、本地方法栈和程序计数器。
  2. 【回答框架 2】堆是最大区域,存放对象实例和数组,是 GC 主要管理区域,可细分为新生代和老年代,逻辑上可压缩。
  3. 【回答框架 3】方法区存储类元信息、常量、静态变量和 JIT 缓存,JDK8 后由元空间实现,使用本地内存,受操作系统限制。
  4. 【回答框架 4】虚拟机栈是线程私有的,每个方法调用创建一个栈帧,内部有局部变量表、操作数栈、动态链接和返回地址,局部变量表存放基本类型和引用。
  5. 【回答框架 5】程序计数器记录当前线程执行的字节码行号,是唯一无 OOM 的区域;本地方法栈用于执行 native 方法。
  6. 【关键点 1】JVM 内存区域分为线程共享的堆和方法区,以及线程私有的虚拟机栈、本地方法栈和程序计数器。
  7. 【关键点 2】堆是对象分配和 GC 的主要区域,方法区在 JDK8 后由元空间实现。
  8. 【关键点 3】虚拟机栈以栈帧为单位,每个方法调用对应一个栈帧。
  9. 【易错点 1】不要混淆 JVM 内存模型与 Java 内存模型,后者关注并发可见性。
  10. 【易错点 2】方法区是逻辑概念,JDK8 后实现为元空间,不再是永久代。
  11. 【易错点 3】程序计数器是唯一不会抛出 OutOfMemoryError 的区域。