JVM(Java 虚拟机)与线上排障:知识图谱与复习路线
本入口定义 JVM(Java 虚拟机)模块的唯一迁移边界、学习顺序、版本表达边界、图形交付和验收方式。它只做导航与质量门禁;01 至 08 子文档分别承担机制、排障、项目表达和综合题正文。旧主文档仍是本轮迁移的基线,不在本文件中复制正文。
1. 使用方式与当前边界
- 旧主文档:
11-JVM与线上排障.md。 - 本入口:
11-JVM与线上排障/00-知识图谱与复习路线.md,负责范围、顺序、版本、图表和验收。 - 正文边界:01 至 05 解释运行机制,06 只组织线上排障证据链,07 只组织项目话术,08 只组织跨章节口述题;跨文档只链接,不复制完整正文。
- 深度目标:全部子文档达到 L4(精通级),即能说明概念、底层机制、数据演绎、失败边界、排查证据和项目取舍。
2. 旧主文档问题基线与唯一迁移口径
2.1 计数基线
| 统计对象 | 旧主文档计数 | 解释 | 用途 |
|---|---|---|---|
回答思路 | 88 | 旧文档每出现一次,代表一组已有答题骨架。 | 唯一迁移计数基线。 |
| 字面“问题” | 141 | 同时包含题干、普通叙述、章节名称与追问文字。 | 仅用于发现遗漏,不用于题目总数。 |
#### 热门面试题 | 24 | 代表旧正文中 24 处章节级题目区。 | 用于检查章节级题目分布。 |
| “热门面试题”文字 | 25 | 比标题数多 1 次,来自“模块综合热门面试题补强”章节名。 | 用于校验标题与文字检索差异。 |
2.2 唯一迁移规则
**以 88 处“回答思路”为唯一题目迁移口径。**每一处只能归属一个目标子文档;它在其他子文档被复用时,只保留到原文的链接和一句适用边界,不能复制为第二份题目正文。字面“问题”计数会把非题干文字计入,热门题标题只描述题目区而非题组,因此两者都不能替代 88 组基线。
旧主文档第 10 节存在重复编号和补强题。迁移时按“题目所解释的核心机制”落位,先以章节映射确定唯一归属,再以 88 组“回答思路”逐组核对;不以编号相同、标题相似或项目案例相似为理由重复计数。
3. 知识树与章节唯一映射
flowchart TB
A["JVM(Java 虚拟机)与线上排障"]
B["01 运行时内存与对象创建"]
C["02 类文件、类加载与执行引擎"]
D["03 GC(垃圾回收)基础算法与对象生命周期"]
E["04 垃圾收集器与版本演进"]
F["05 内存、日志、参数与容器化"]
G["06 线上排障与事故复盘"]
H["07 项目案例与面试话术"]
I["08 综合面试题库"]
A --> B
B --> C
C --> D
D --> E
B --> F
E --> F
F --> G
G --> H
B --> I
C --> I
D --> I
E --> I
F --> I
G --> I
H --> I这张 Mermaid(图表语法)图说明知识依赖:对象创建要先理解内存,收集器选择依赖 GC(垃圾回收)算法,容器内存预算汇总运行时和收集器信息;事故复盘与综合题只消费前序证据,不重复讲机制。图中所有含括号的节点均使用双引号,避免 Mermaid(图表语法)把括号误解析为语法。
| 目标文件 | L(深度等级) | 唯一职责 | 旧主文档唯一迁移范围 | 主要依赖 |
|---|---|---|---|---|
00-知识图谱与复习路线.md | L4(精通级) | 基线、顺序、版本、图表、验收和恢复。 | 第 1、2、11 节,以及第 10 节的题库导航。 | OpenSpec(规格驱动框架)规则与旧主文档。 |
01-运行时内存与对象创建.md | L4(精通级) | 运行时内存、对象布局、分配、TLAB(线程本地分配缓冲区)、逃逸分析和引用。 | 3.1;3.4 中对象创建部分。 | 无,作为机制起点。 |
02-类文件类加载与执行引擎.md | L4(精通级) | 生命周期、类文件结构、类加载、字节码、解释执行和 JIT(即时编译)。 | 3.2、3.3、3.5;第 10 节中的字节码与 JIT(即时编译)题。 | 01 的内存与对象边界。 |
03-GC基础算法与对象生命周期.md | L4(精通级) | GC(垃圾回收)根、可达性、引用、算法、年龄与晋升。 | 4.1、4.2、4.3。 | 01 的对象创建与 02 的类卸载边界。 |
04-垃圾收集器与版本演进.md | L4(精通级) | Serial(串行收集器)、Parallel(并行收集器)、CMS(并发标记清除)、G1(垃圾优先回收器)与 ZGC(低延迟垃圾回收器)。 | 4.4、6.1 的收集器对比;第 10 节的收集器题。 | 03 的算法、对象年龄与晋升。 |
05-内存日志参数与容器化.md | L4(精通级) | GC(垃圾回收)日志、参数、直接内存、线程栈、容器限制与可观测性。 | 第 6 节;第 10 节的日志、直接内存与容器题。 | 01 的内存预算与 04 的收集器阶段。 |
06-线上排障与事故复盘.md | L4(精通级) | OOM(内存溢出)、CPU(中央处理器)、Full GC(完全垃圾回收)、死锁与泄漏的证据链。 | 第 5、8 节;第 10 节的事故题。 | 01 至 05 的可观测信号。 |
07-项目案例与面试话术.md | L4(精通级) | 异步导出、OkHttp(HTTP 客户端)、优雅停机与 Runner(执行器)调度。 | 第 7、9 节。 | 05 的预算与 06 的复盘结构。 |
08-综合面试题库.md | L4(精通级) | 跨章节长答案、追问和详细章节链接。 | 第 10 节全部问题,去重后迁入。 | 01 至 07 的稳定链接。 |
4. 学习与排障路线
flowchart LR
A["识别现象:延迟、重启、内存、CPU(中央处理器)"]
B["确认边界:JDK(Java 开发工具包)版本、容器限制、启动参数"]
C["采集证据:日志、线程、堆与进程信息"]
D["回到机制:内存、类加载、GC(垃圾回收)与执行引擎"]
E["形成判断:泄漏、容量不足、分配过快、阻塞或配置失配"]
F["止血与验证:限流、降级、扩容、参数调整、回归观察"]
G["复盘与表达:项目话术、追问、预防指标"]
A --> B --> C --> D --> E --> F --> G
D -. "知识复习" .-> A
G -. "题库复述" .-> D这张 Mermaid(图表语法)图把学习和线上处理收敛为同一条闭环:先以版本、资源限制和证据缩小范围,再用机制解释根因,最后验证修复并沉淀面试表达。图中所有含括号的节点均使用双引号;虚线表示复习与复盘对下一次诊断的反馈,而非一次请求的同步调用。
| 顺序 | 学习主题 | 学习通过标准 | 排障时如何使用 |
|---|---|---|---|
| 1 | 01 运行时内存与对象创建 | 你能画出线程私有与共享内存,并解释一个对象从分配到发布的路径。 | 区分堆、栈、直接内存和元空间的压力来源。 |
| 2 | 02 类文件、类加载与执行引擎 | 你能区分类生命周期、对象生命周期和 JVM(Java 虚拟机)进程生命周期。 | 解释类加载失败、代码缓存、解释与 JIT(即时编译)波动。 |
| 3 | 03 GC(垃圾回收)基础算法与对象生命周期 | 你能按引用链和算法成本推演对象何时回收、为何晋升。 | 判断存活集过大、晋升过快或引用链未释放。 |
| 4 | 04 垃圾收集器与版本演进 | 你能按延迟、吞吐、堆规模和版本边界选择验证方向。 | 判断收集器阶段、回收失败和不兼容参数。 |
| 5 | 05 内存、日志、参数与容器化 | 你能做出进程内存预算并读出一次 GC(垃圾回收)事件的关键信号。 | 先核对容器限制、进程 RSS(常驻内存集)与 JVM(Java 虚拟机)参数。 |
| 6 | 06 线上排障与事故复盘 | 你能给出止血、取证、根因、修复验证的顺序。 | 按证据链处置 OOM(内存溢出)、CPU(中央处理器)高和频繁 Full GC(完全垃圾回收)。 |
| 7 | 07 项目案例与面试话术 | 你能用背景、量级、证据、方案、风险、结果完整复述案例。 | 把异步导出、Runner(执行器)恢复和优雅停机讲成工程决策。 |
| 8 | 08 综合面试题库 | 你能在三至五分钟内完成跨章节口述,并回答直接追问。 | 将真实事故证据映射回机制和预防措施。 |
5. JDK(Java 开发工具包)8、17、21 版本基线与表达边界
5.1 先验证,再下结论
本模块以 OpenJDK(开放 Java 开发工具包)HotSpot(热点虚拟机)为解释参照,不把“默认”写成跨供应商、跨更新版本、跨硬件和跨启动参数都成立的结论。每次线上分析都记录实际发行版、完整版本、启动参数、容器运行时和限制值;再用 -XX:+PrintCommandLineFlags、-XX:+PrintFlagsFinal、-Xlog:gc*=info 与 -Xlog:os+container=trace 的实际输出确认收集器、参数可用性和容器识别结果。
| 基线 | 默认收集器的安全表述 | 日志边界 | 容器感知边界 | CMS(并发标记清除)与 ZGC(低延迟垃圾回收器)边界 | | --- | --- | --- | --- | | JDK(Java 开发工具包)8 | Oracle(甲骨文)文档说明,Server-class(服务器级)机器上的 Server VM(服务器虚拟机)默认选择 Parallel(并行收集器);实际选择仍受虚拟机类型、硬件资源和显式参数影响,必须以进程输出复核。 | 旧式 GC(垃圾回收)日志参数是本代基线;不要把 JDK(Java 开发工具包)9+ 的 -Xlog 配置原样当作 JDK(Java 开发工具包)8 语法。 | 不能把“JDK(Java 开发工具包)8”笼统等同于“已自动识别容器”;应记录具体更新版本、发行版和限制模式后验证。 | CMS(并发标记清除)仍是历史系统可能显式启用的选项;ZGC(低延迟垃圾回收器)不属于 JDK(Java 开发工具包)8 基线。 | | JDK(Java 开发工具包)17 | JDK(Java 开发工具包)9 的 JEP(JDK 增强提案)248 将 G1(垃圾优先回收器)设为 Server(服务器)配置的默认收集器;对 JDK(Java 开发工具包)17 进程仍以实际输出为准,不将其泛化为所有受限环境。 | 使用统一日志框架的 -Xlog 语法;日志字段、标签与解析器兼容性应在目标发行版验证。 | 以运行时探测结果为准,重点核对可见 CPU(中央处理器)、内存限制和百分比型堆参数的计算结果。 | JDK(Java 开发工具包)14 已按 JEP(JDK 增强提案)363 移除 CMS(并发标记清除);ZGC(低延迟垃圾回收器)在 JDK(Java 开发工具包)15 由实验性能力转为产品能力,但不是默认收集器。 | | JDK(Java 开发工具包)21 | 沿用“G1(垃圾优先回收器)通常是未显式选择收集器时的验证起点”,不以该句替代运行时检查。 | 延续统一日志框架;通过目标版本的 -Xlog:help 获取真实标签与可用选项。 | 同时核对容器限制、进程原生内存和线程数,因为容器 OOMKilled(容器内存杀死)不等同于 JVM(Java 虚拟机)抛出 OOM(内存溢出)。 | ZGC(低延迟垃圾回收器)的分代实现由 JEP(JDK 增强提案)439 在 JDK(Java 开发工具包)21 交付;是否启用、使用的模式和参数仍以目标构建的标志输出与发布说明为准。 |
版本依据与可复查来源:
- JEP(JDK 增强提案)248:G1(垃圾优先回收器)默认收集器 说明 JDK(Java 开发工具包)9 的 Server(服务器)配置默认变更。
- JEP(JDK 增强提案)158 与 JEP(JDK 增强提案)271:统一 JVM(Java 虚拟机)日志与统一 GC(垃圾回收)日志 说明 JDK(Java 开发工具包)9 起的日志框架与格式迁移边界。
- JDK(Java 开发工具包)10
UseContainerSupport(容器支持开关)文档 说明其自动容器探测适用的运行条件及-Xlog:os+container=trace诊断方式。 - JEP(JDK 增强提案)363:移除 CMS(并发标记清除)、JEP(JDK 增强提案)377:ZGC(低延迟垃圾回收器)产品化 与 JEP(JDK 增强提案)439:分代 ZGC(低延迟垃圾回收器) 规定收集器演进边界。
6. 必画图与图形资产清单
| 图形主题 | 唯一归属 | 形式与必须表达的结论 | 资产或产物 |
|---|---|---|---|
| 内存区域 | 01-运行时内存与对象创建.md | Mermaid(图表语法)图:线程私有、共享区域、直接内存与故障信号。 | 内嵌 Mermaid(图表语法)图。 |
| 对象创建 | 01-运行时内存与对象创建.md | Mermaid(图表语法)顺序图:类检查、分配、零值、对象头、构造和安全发布。 | 内嵌 Mermaid(图表语法)图。 |
| 对象生命周期 | 03-GC基础算法与对象生命周期.md | 教学图:创建、跨代引用、不可达、标记与回收,并标注失败路径。 | assets/object-lifecycle.puml、assets/object-lifecycle.png。 |
| 类生命周期 | 02-类文件类加载与执行引擎.md | Mermaid(图表语法)状态图:加载、验证、准备、解析、初始化、使用与卸载。 | 内嵌 Mermaid(图表语法)图。 |
| 字节码执行 | 02-类文件类加载与执行引擎.md | Mermaid(图表语法)图:类文件、局部变量表、操作数栈、动态链接与返回。 | 内嵌 Mermaid(图表语法)图。 |
| GC(垃圾回收)算法 | 03-GC基础算法与对象生命周期.md | Mermaid(图表语法)图:标记清除、复制、标记整理与分代取舍。 | 内嵌 Mermaid(图表语法)图。 |
| G1(垃圾优先回收器)与 ZGC(低延迟垃圾回收器) | 04-垃圾收集器与版本演进.md | Mermaid(图表语法)图:阶段、停顿与失败边界;PlantUML(开源建模工具)图:Region(区域)与跨区引用。 | assets/g1-regions.puml、assets/g1-regions.png。 |
| GC(垃圾回收)日志 | 05-内存日志参数与容器化.md | Mermaid(图表语法)图:日志字段到容量、停顿和原因的读法。 | 内嵌 Mermaid(图表语法)图。 |
| 容器内存 | 05-内存日志参数与容器化.md | Mermaid(图表语法)图:限制值、堆、元空间、线程栈、直接内存与 RSS(常驻内存集)预算。 | 内嵌 Mermaid(图表语法)图。 |
| 排障决策 | 06-线上排障与事故复盘.md | Mermaid(图表语法)图:现象、止血、取证、根因、验证和复盘。 | 内嵌 Mermaid(图表语法)图。 |
| 项目事故 | 07-项目案例与面试话术.md | Mermaid(图表语法)图:异步导出、Runner(执行器)恢复或优雅停机的正常与失败路径。 | 内嵌 Mermaid(图表语法)图。 |
所有图必须同时表达正常路径、至少一条失败路径和可用于面试复述的结论。PlantUML(开源建模工具)图保留源文件与 PNG(便携式网络图形)渲染结果;Mermaid(图表语法)图在提交前进行真实渲染。
7. 完成判定与模块审计
7.1 入口完成判定
本入口满足下列条件,才算可独立续接:88 组迁移口径与 24 个章节级热门题区已登记;01 至 08 的唯一职责、依赖、学习顺序和 L(深度等级)已明确;JDK(Java 开发工具包)8、17、21 的版本结论均有表达边界和来源;图形资产路径已登记;单文件术语与链接审计为 0 个问题。
7.2 模块完成判定
整个 JVM(Java 虚拟机)模块只有在以下条件同时成立时才可标记为“已完成”:
- 88 组“回答思路”都能追溯到唯一目标文件,且每组都补齐详细答案、进阶追问和进阶回答。
- 01 至 07 的每个知识型小节含
#### 热门面试题和至少三道完整题;08 含至少 30 道跨章节长答案题,并链接到真实详细章节。 - 第 6 节登记的图形均有源文件或可渲染 Mermaid(图表语法)定义,且真实渲染通过。
- 术语、相对链接、代码围栏、题目字段、占位句和事实边界审计全部通过;JDK(Java 开发工具包)版本结论已按目标发行版抽查。
- 异步导出、Runner(执行器)调度、WMS(仓储管理系统)库存压力或 IoT(物联网)报警风暴至少各有一个可复述的 JVM(Java 虚拟机)排障落点。
7.3 本文件定向审计
审计器的 --module 参数按路径子串匹配,00-知识图谱与复习路线 会命中其他模块的同名入口。因此本文件使用审计器的 audit_file(单文件审计函数)进行定向检查;以下命令只检查本文件、术语与链接,不会把其他模块同名文件混入结果。
python3 - <<'PY'
from pathlib import Path
from tools.interview_kb_audit import audit_file, load_terminology
root = Path("面试知识整理")
target = root / "11-JVM与线上排障/00-知识图谱与复习路线.md"
terms = load_terminology(root / "04-英文术语标注规范.md")
issues = audit_file(target, terms)
for issue in issues:
print(f"{issue.path}:{issue.line}: [{issue.code}] {issue.message}")
raise SystemExit(1 if issues else 0)
PY命令退出码为 0 且无输出时,表示本文件的链接、术语、围栏、占位句和结构规则均无问题;这不替代 01 至 08 全部完成后的全模块审计。
8. 新对话恢复说明
- 先完整读取
AGENTS.md、OpenSpec(规格驱动框架)规格与变更包、面试知识整理/00-项目说明-续接必读.md、03-成稿进度看板.md、04-英文术语标注规范.md、05-查漏补全-精通级补强计划.md、06-审查报告与明日学习路线.md、08-精通级扩展执行看板.md。 - 再读取本入口、旧主文档全部标题、
docs/superpowers/plans/2026-07-13-interview-knowledge-base-module-02-jvm-plan.md与tools/interview_kb_audit.py;先确认 88 组迁移基线和本文件第 3 节的唯一边界。 - 按
08-精通级扩展执行看板.md的编号选择 JVM(Java 虚拟机)模块最小的未完成子文档;写作只落在该子文档及其允许的图形资产中,不回写旧主文档,不复制其他子文档正文。 - 写完后先执行该文件的
audit_file(单文件审计函数),再检查 Mermaid(图表语法)或 PlantUML(开源建模工具)真实渲染;只有该子文档的术语、链接、图形和事实边界均通过,才更新获授权的执行看板。 - 全部子文档通过后,以本文件第 7 节的模块完成判定收口;旧主文档的导航化、两级看板更新与全模块审计必须在同一获授权工作范围内完成。
