外观
JVM
知识脉络
JVM
├── 内存结构
│ ├── 堆(新生代/老年代)
│ ├── 方法区/元空间
│ ├── 栈(虚拟机栈/本地方法栈)
│ └── 程序计数器
├── 垃圾回收
│ ├── 判定算法(可达性分析/引用计数)
│ ├── GC 算法(标记清除/复制/整理)
│ ├── 收集器(CMS/G1/ZGC)
│ └── GC 调优实战
├── 类加载
│ ├── 加载过程(加载→验证→准备→解析→初始化)
│ ├── 双亲委派模型
│ └── 打破双亲委派(SPI/OSGi)
├── JMM(Java内存模型)
│ ├── happens-before
│ ├── 指令重排序
│ └── 内存屏障
└── 排查与调优
├── OOM 类型与排查
├── 常用工具(jstack/jmap/arthas)
└── GC日志分析知识点清单
| # | 题目 | 频率 | 难度 | 状态 |
|---|---|---|---|---|
| 1 | JVM内存结构 | 极高 | 基础 | todo |
| 2 | 堆内存分代模型 | 极高 | 进阶 | todo |
| 3 | 垃圾回收算法 | 极高 | 进阶 | todo |
| 4 | CMS收集器 | 高 | 进阶 | todo |
| 5 | G1收集器原理 | 极高 | 困难 | todo |
| 6 | ZGC特性 | 中 | 困难 | todo |
| 7 | 类加载过程 | 极高 | 进阶 | todo |
| 8 | 双亲委派模型 | 极高 | 进阶 | todo |
| 9 | 打破双亲委派 | 高 | 困难 | todo |
| 10 | JMM与happens-before | 高 | 困难 | todo |
| 11 | OOM类型与排查 | 极高 | 进阶 | todo |
| 12 | GC调优实战 | 高 | 困难 | todo |
| 13 | 对象创建过程 | 高 | 进阶 | todo |
| 14 | 对象内存布局 | 中 | 进阶 | todo |
| 15 | 引用类型(强软弱虚) | 高 | 基础 | todo |
| 16 | JVM常用调优参数 | 高 | 进阶 | todo |
| 17 | 逃逸分析与栈上分配 | 中 | 困难 | todo |
| 18 | JIT编译优化 | 中 | 困难 | todo |
| 19 | Arthas使用实战 | 中 | 进阶 | todo |
| 20 | Full-GC频繁排查 | 高 | 困难 | todo |
口诀速记
- 内存结构: "堆栈方程(堆/栈/方法区/程序计数器)"
- GC三算法: "清复整(标记清除/复制/标记整理)"
- 类加载: "加验准解初"
- 引用强度: "强软弱虚—>必回收难度递减"
跨域关联
- JMM → volatile原理(并发编程)
- OOM排查 → 线程池配置(并发编程)
- GC → Redis持久化fork(Redis + OS)