在Java后端开发面试中,JVM(Java Virtual Machine) 几乎是必问的核心知识点。
很多互联网公司(如大厂或中大型技术团队)在技术面试中都会重点考察 JVM内存模型、垃圾回收机制、类加载机制以及JVM调优能力

本文整理了一份 JVM面试题100道(含答案解析),帮助Java程序员系统复习JVM知识体系。

适合人群:

  • Java后端开发工程师
  • 准备跳槽涨薪的Java程序员
  • 想系统学习JVM原理的开发者
  • 准备大厂技术面试的工程师

Java面试题

如果你想查看 完整JVM题库 + AI答案解析,可以访问:

👉
https://myquotego.com/html/questions?_from=csdn_158935487_1


一、JVM基础面试题(1-20)

1、什么是JVM?

JVM(Java Virtual Machine)是运行Java字节码的虚拟机,它负责:

  • 加载类
  • 执行字节码
  • 管理内存
  • 垃圾回收

JVM的存在使得Java具有 跨平台特性(Write Once Run Anywhere)


2、JVM的主要组成部分有哪些?

JVM主要由以下部分组成:

  • 类加载子系统
  • 运行时数据区
  • 执行引擎
  • 本地方法接口(JNI)
  • 垃圾回收器

3、JDK、JRE、JVM之间的关系?

  • JDK:Java开发工具包
  • JRE:Java运行环境
  • JVM:Java虚拟机

关系:
JDK > JRE > JVM


4、JVM运行时数据区有哪些?

JVM运行时内存结构主要包括:

  • 程序计数器
  • Java虚拟机栈
  • 本地方法栈
  • 方法区

5、程序计数器的作用是什么?

程序计数器用于记录当前线程执行的字节码指令地址。

特点:

  • 线程私有
  • 不会发生OOM

6、Java虚拟机栈是什么?

Java虚拟机栈是线程私有的内存区域,用于存储:

  • 局部变量
  • 操作数栈
  • 方法返回地址

每个方法执行都会创建一个 栈帧


7、什么是栈帧?

栈帧包含:

  • 局部变量表
  • 操作数栈
  • 动态链接
  • 方法返回地址

8、什么情况下会出现StackOverflowError?

当线程请求的栈深度超过虚拟机允许的最大深度时,会抛出:
StackOverflowError

常见原因:

  • 无限递归
  • 栈深度过大

9、什么情况下会出现OutOfMemoryError?

当JVM无法再分配内存时,会抛出:

OutOfMemoryError

常见情况:

  • 堆内存不足
  • 方法区内存不足
  • 直接内存不足

10、什么是堆?

堆是JVM中 最大的一块内存区域,用于存放:

  • 对象实例
  • 数组

堆是 线程共享 的。


更多JVM面试题可以查看完整题库:

👉
https://myquotego.com/html/questions?_from=csdn_158935487_2


二、JVM内存结构面试题(21-40)

21、堆内存结构是怎样的?

堆通常分为:

  • 新生代
  • 老年代

新生代又分为:

  • Eden区
  • Survivor0
  • Survivor1

22、为什么要分代?

因为不同对象生命周期不同:

  • 大多数对象生命周期很短
  • 少数对象生命周期很长

分代可以提高GC效率。


23、什么是TLAB?

TLAB(Thread Local Allocation Buffer)是线程私有的内存区域,用于减少线程竞争。


24、什么是对象分配策略?

对象分配通常优先在 Eden区

大对象可能直接进入 老年代


25、什么是逃逸分析?

逃逸分析用于判断对象是否会被其他线程访问,从而决定:

  • 是否分配在栈上
  • 是否进行锁消除

三、垃圾回收面试题(41-60)

41、什么是垃圾回收?

垃圾回收是自动回收 不再使用的对象内存


42、判断对象是否存活的方法?

两种:

  • 引用计数法
  • 可达性分析

Java使用 可达性分析


43、什么是GC Roots?

GC Roots是可达性分析的起点。

常见GC Roots:

  • 栈中的引用
  • 静态变量
  • 常量
  • JNI引用

44、常见垃圾回收算法有哪些?

主要有:

  • 标记清除
  • 标记整理
  • 复制算法
  • 分代收集算法

45、Minor GC 和 Full GC 有什么区别?

Minor GC:

  • 发生在新生代

Full GC:

  • 发生在整个堆

更多垃圾回收面试题与答案解析:

👉
https://myquotego.com/html/questions?_from=csdn_158935487_3


四、垃圾回收器面试题(61-80)

常见GC收集器:

  • Serial
  • ParNew
  • Parallel Scavenge
  • CMS
  • G1

61、CMS垃圾回收器的特点?

特点:

  • 低停顿
  • 并发收集

缺点:

  • 会产生内存碎片

62、G1垃圾回收器有什么特点?

特点:

  • 面向服务端
  • 可预测停顿时间
  • 分区回收

63、G1为什么比CMS先进?

原因:

  • 不会产生严重碎片
  • 更好的停顿控制

五、类加载机制面试题(81-100)

81、Java类加载过程?

五个阶段:

  1. 加载
  2. 验证
  3. 准备
  4. 解析
  5. 初始化

82、什么是双亲委派模型?

类加载时:
子加载器

父加载器

Bootstrap

优点:

  • 避免重复加载
  • 提高安全性

83、哪些类加载器?

三种:

  • Bootstrap ClassLoader
  • Extension ClassLoader
  • Application ClassLoader

84、如何打破双亲委派?

自定义 ClassLoader。


85、什么是热部署?

在不重启应用的情况下加载新类。


更多Java面试题整理

JVM面试题
MySQL面试题
Redis面试题
Spring面试题

完整面试题库:

https://myquotego.com/html/questions?_from=csdn_158935487_4

支持:

  • AI模拟面试
  • AI答案解析
  • 2000+面试题
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐