JVM垃圾回收面试题50道(含答案解析)
在Java技术面试中,JVM垃圾回收(GC)机制是高频考点之一。
很多互联网公司在面试Java工程师时都会重点考察:
- JVM内存结构
- 垃圾回收算法
- 垃圾回收器
- GC调优经验
本文整理了 JVM垃圾回收面试题50道(含答案解析),帮助Java开发者系统复习GC相关知识。
适合人群:
- Java后端开发工程师
- 准备跳槽涨薪的程序员
- 想深入理解JVM原理的开发者

如果你想查看更多 JVM面试题 + AI答案解析:
👉 https://myquotego.com/html/questions?_from=csdn_158935763_1
一、垃圾回收基础面试题(1-10)
1、什么是垃圾回收(GC)?
垃圾回收是指 自动回收程序中不再使用对象所占用内存 的机制,从而避免内存泄漏。
2、为什么Java需要垃圾回收?
因为Java程序员不需要手动管理内存,JVM通过GC自动回收无用对象,降低内存泄漏风险。
3、Java如何判断对象是否需要回收?
主要通过 可达性分析算法(Reachability Analysis) 判断对象是否可达。
4、什么是GC Roots?
GC Roots是可达性分析的起点。
常见GC Roots包括:
- 虚拟机栈中的引用
- 方法区中的静态变量
- 常量引用
- JNI引用
5、什么是引用计数法?
每个对象维护一个引用计数,当计数为0时表示对象可回收。
缺点:
- 无法解决循环引用问题。
6、什么是可达性分析?
从GC Roots出发进行搜索,如果对象不可达,则判定为垃圾对象。
7、什么是对象复活?
对象在finalize方法中可能重新被引用,从而避免被回收。
8、什么是强引用?
最常见引用方式,只要存在强引用,对象不会被回收。
9、Java中有哪些引用类型?
四种:
- 强引用
- 软引用
- 弱引用
- 虚引用
10、软引用有什么作用?
当内存不足时,软引用对象会被回收,常用于 缓存实现。
更多JVM垃圾回收面试题:
👉 https://myquotego.com/html/questions?_from=csdn_158935763_2
二、垃圾回收算法面试题(11-20)
11、常见GC算法有哪些?
主要包括:
- 标记清除算法
- 复制算法
- 标记整理算法
- 分代收集算法
12、什么是标记清除算法?
分为两步:
- 标记需要回收的对象
- 清除这些对象
缺点:
- 会产生内存碎片
13、什么是复制算法?
将内存分为两块,每次只使用其中一块,回收时复制存活对象。
优点:
- 不产生碎片
缺点:
- 浪费内存
14、什么是标记整理算法?
标记存活对象后,将对象向一端移动,整理内存空间。
15、什么是分代收集?
根据对象生命周期不同,将堆分为:
- 新生代
- 老年代
16、新生代为什么使用复制算法?
因为新生代 存活对象少,回收效率高。
17、老年代为什么使用标记整理?
因为老年代 对象存活率高。
18、什么是Stop The World?
GC执行时 暂停所有用户线程。
19、什么是Minor GC?
发生在 新生代 的垃圾回收。
20、什么是Full GC?
对整个堆进行垃圾回收。
三、垃圾回收器面试题(21-35)
21、常见垃圾回收器有哪些?
- Serial
- ParNew
- Parallel Scavenge
- CMS
- G1
22、Serial收集器特点?
- 单线程
- Stop The World
23、Parallel Scavenge特点?
- 多线程
- 吞吐量优先
24、CMS收集器特点?
- 并发收集
- 低停顿
25、CMS的缺点?
- 内存碎片
- 需要更多CPU资源
26、G1垃圾回收器是什么?
G1是 面向服务端应用的低延迟GC收集器。
27、G1的核心思想?
将堆划分为多个 Region区域。
28、G1如何控制停顿时间?
通过 可预测停顿时间模型。
29、G1回收流程?
主要包括:
- 初始标记
- 并发标记
- 最终标记
- 筛选回收
30、什么是Mixed GC?
同时回收:
- 新生代
- 部分老年代
四、GC调优面试题(36-50)
36、常见JVM调优参数?
例如:
-Xms
-Xmx
-Xmn
-XX:+UseG1GC
37、如何查看GC日志?
可以使用:
-XX:+PrintGCDetails
38、什么是内存泄漏?
对象不再使用但仍然被引用,无法被GC回收。
39、常见内存泄漏场景?
例如:
- 静态集合
- ThreadLocal未清理
- 监听器未释放
40、如何分析内存问题?
常见工具:
- jmap
- jstack
- jvisualvm
41、什么是堆转储(Heap Dump)?
JVM内存快照,用于分析内存问题。
42、如何生成Heap Dump?
可以使用:
jmap -dump
43、什么是Young GC频繁问题?
新生代太小导致GC频繁。
44、什么是Full GC频繁问题?
老年代空间不足。
45、如何减少GC次数?
可以:
- 增大堆内存
- 优化对象创建
46、如何减少GC停顿时间?
可以:
- 使用G1
- 优化堆大小
47、什么是对象晋升?
对象从新生代进入老年代。
48、什么是大对象?
较大的对象可能直接进入老年代。
49、什么是GC调优核心目标?
主要目标:
- 降低停顿时间
- 提高吞吐量
50、GC调优常见思路?
步骤:
- 查看GC日志
- 分析内存使用
- 调整JVM参数
更多Java面试题整理
JVM面试题
MySQL面试题
Redis面试题
Spring面试题
完整面试题库:
https://myquotego.com/html/questions?_from=csdn_158935763_3
支持:
- AI模拟面试
- AI答案解析
- 2000+面试题
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)