连载中 20/20

JVM 收官:一张地图串起二十篇

2026-09-21 · 7 阅读 · 0 评论 · 0 赞

全景地图

模块核心内容篇目
内存与对象五块数据区、对象五道工序、三段身体2-3
类加载五步流水线、双亲委派与打破4-5
垃圾回收可达性分析、三算法、Serial 到 ZGC6-10
实战排查GC 日志、四件套、MAT、OOM/CPU/泄漏11-16
调优进阶参数思路、JIT 手术、堆外内存17-19

知识的环

这四层不是并列关系,是依赖关系:不懂内存结构,就看不懂 GC 在收什么;不懂 GC,就看不懂泄漏曲线和调优参数;不懂排查工具,前面学的全都落不了地。反过来,排查能力又加深对机制的理解——用 MAT 摸过一次引用链,可达性分析就再也不用背了。这也是这个系列把"实战排查"排在中间而不是末尾的原因:它是理解机制的最好练习场。

高频问题清单

面试常问的十问,每问配一句答法提示:①运行时数据区——五块+谁私有谁共享;②对象创建过程——五道工序+TLAB;③双亲委派——模型+为什么+怎么打破;④四种引用——各举一个应用;⑤CMS 与 G1——算法差异+停顿模型;⑥ZGC 为什么快——着色指针+读屏障;⑦CPU 飙高怎么排查——top -Hp→jstack 三步;⑧排查过什么内存问题——准备一个自己的案例(泄漏/OOM 各一);⑨调优思路——漏斗+目标先行+单变量;⑩StackOverflow 与 unable to create thread 区别——单栈深 vs 线程数。⑧是分水岭:答得出案例的是排查过,答不出的是背过。

五个动手实验

1. 造一次 OOM:List 撑爆堆,观察 HeapDumpOnOutOfMemoryError 的 dump
   用 MAT 打开,找到那条 List——全程十分钟,收益一学期
2. 造一次 StackOverflowError:无限递归,调 -Xss 看栈深变化
3. 观察 GC:写个不停分配的程序,-Xlog:gc* 对照本系列第 11 篇读日志
4. 制造一次慢泄漏:ThreadLocal 不 remove + 线程池,看老年代基线抬升
5. 自定义类加载器:加载同一个类两次,验证 instanceof 为 false

五个实验对应五个知识块,每个不超过半小时。JVM 的知识,做过一遍和看过一遍,是两种东西。

收官:JVM 在整个体系里的位置

把视角拉远:限流熔断守护的是流量,缓存守护的是数据库,分库分表守护的是存储,而 JVM 守护的是进程本身——前面所有高并发手段,最终都要在 JVM 这个地盘上跑。流量洪水穿过限流的大门,挤进的是堆和 GC 的世界;缓存命中率的背后,是元空间里那串类在支撑。二十篇收官,愿下次告警响起时,你不再只有重启大法。

☕
503

10 年全栈工程师 · 503咖啡馆主理人

#JVM收官#知识地图#面试清单#动手实验#系列总结

评论 (0)

热门推荐

连载中 11/22

主从搭建实操:从零配出一主两从

光讲原理不过瘾?手把手搭一主两从:my.cnf 六个参数、复制账号、GTID、CHANGE REPLICATION SOURCE TO、SHOW REPLICA STATUS 验收,附翻车排查清单。

#MySQL#主从复制#GTID#主从搭建#高可用
2026-05-07 · 10101 阅读 · 0 评论 · 0 赞
连载中 16/22

连接池:HikariCP 参数与连接风暴

连接池不是越大越好:8 核机器配 1000 连接反而更慢的数学原理,HikariCP 四个必调参数,maxLifetime 与 wait_timeout 的隐形陷阱。

#MySQL#连接池#HikariCP#maxLifetime#连接风暴
2026-05-10 · 9873 阅读 · 0 评论 · 0 赞
连载中 4/16

缓存穿透:恶意 ID 打穿 MySQL 的四道防线

请求的数据在缓存和数据库里都不存在时,缓存形同虚设。聊聊参数校验、空值缓存、布隆过滤器、限流熔断四道防线的原理与组合打法。

#Redis#缓存穿透#布隆过滤器#高可用
2026-05-16 · 9294 阅读 · 21 评论 · 287 赞