课程解决的核心痛点与适用门槛

在 Java 后端开发领域,JVM 往往是区分初级工程师与资深开发者的关键分水岭。许多开发者在实际工作中遇到内存溢出、CPU 飙高或线程死锁时,往往只能依赖重启服务或盲目调整参数,缺乏系统的排查思路。同时,在技术面试中,类加载机制、垃圾回收算法及内存模型等高频考点,也常成为求职者难以跨越的障碍。本课程并非泛泛介绍基础概念,而是聚焦 JVM 七大核心系统,旨在构建从理论到实战的完整知识闭环,帮助学员在工作中游刃有余,在面试中自如应答。

本课程适合具备一定 Java 语法基础、希望深入理解虚拟机底层原理的后端开发者,以及急需攻克 JVM 技术难点以应对面试的转行者。入门门槛适中,无需预先掌握汇编或操作系统内核知识,但建议读者已熟悉基本的数据结构与多线程编程,以便更好地承接后续的高并发应用与源码剖析内容。

学习路径规划与资料配合方法

建议采用“由浅入深、理论与实践交替”的学习顺序。初学者应优先夯实“基础原理篇”,彻底厘清运行时数据区与类加载流程,这是理解后续所有高级特性的基石。随后进入“面试技巧篇”梳理常见考点,再通过对“实践经验篇”和“字节码到 AOP 篇”的案例演练,将抽象理论具象化。对于有一定经验的开发者,可直接重点研读“源码剖析篇”,深入理解 JVM 内部实现细节,最后通过“新技术介绍篇”拓展视野,保持技术敏感度。

资料包中的配套内容不仅是辅助,更是巩固知识的关键环节。切忌只看不练,建议在观看视频的同时,利用提供的工具或代码片段动手实践。例如,编写代码触发特定的垃圾回收场景,使用监控工具观察内存变化曲线,或反编译字节码以验证 AOP 代理机制。通过这种“输入—输出—反馈”的循环,将被动接收的信息转化为可独立操作的工作技能,真正实现从懂原理到会排障的跨越。

学完后的独立能力产出

完成本课程系统学习后,你将具备独立进行 JVM 性能调优与故障诊断的核心能力。具体而言,能够根据应用特征合理配置内存参数与选择 GC 策略,熟练运用专业工具定位内存泄漏、死锁等复杂问题根源,并在高并发场景下优化线程模型以提升系统稳定性。此外,面对深入的 JVM 技术面试,你能结合源码理解与实战经验,给出逻辑严密、有理有据的技术解答,从而在职业竞争力上建立起显著优势。

课程目录

├── 1-从这里开始全面提升技术深度–课前准备/ │ └── [ 50M] 1-1 大纲总领-从这里开始全面提升技术深度 ├── 2-JVM基础原理篇-透彻理解类加载子系统/ │ ├── [101M] 2-1 从Hello World轻松理解类加载的基本过程 │ ├── [108M] 2-2 深入剖析类加载器的工作原理 │ ├── [ 45M] 2-3 从JVM源码层面理解加载器工作原理——这里有个单例模式 │ ├── [ 49M] 2-4 图解双亲委派机制的核心流程 │ ├── [116M] 2-5 从JVM源码理解双亲委派机制—这里有递归的经典应用 │ ├── [120M] 2-6 如何打破双亲委派机制? │ ├── [ 96M] 2-7 【面试专题1】JVM基本概念常见面试题与面试如何回答 │ ├── [ 33M] 2-8 【经典案例】深入浅出Tomcat的沙箱安全机制 │ ├── [ 73M] 2-9 【面试专题2】类加载器与双亲委派机制常见面试题 │ └── [ 51M] 2-

10 本章总结 ├── 3-JVM基础原理篇-七步带你掌握JVM内存结构/ │ ├── [ 24M] 3-1 从房屋户型图理解JVM的内存划分原理与基本结构介绍- │ ├── [ 41M] 3-2 第一步:掌握程序计数器的功能与工作过程 │ ├── [ 34M] 3-3 第二步:掌握虚拟机栈的功能与故障实战新 │ ├── [ 55M] 3-4 掌握虚拟机栈的内部结构 │ ├── [ 30M] 3-5 图解虚拟机栈与PC协同工作过程 │ ├── [ 90M] 3-6 第三步:轻松掌握本地方法(native)接口与线程调用的底层原理 │ ├── [5.9M] 3-7 第四步:直接内存介绍与应用简介 │ ├── [129M] 3-8 第五步:掌握方法区的功能与内部结构(上) │ ├── [ 75M] 3-9 第五步:掌握方法区的功能与内部结构(下) │ ├── [ 37M] 3-10 【堆结构】第六步:一步一图剖析JVM的内存分配策略 │ ├── [ 33M] 3-

11 【场景演示】如何执行一次年轻代垃圾回收? │ ├── [ 63M] 3-

12 【场景演示】如何验证对象进入老年代? │ ├── [ 25M] 3-13 【堆结构】第七步:一步一图剖析G1垃圾回收器的内存分配策略 │ ├── [143M] 3-14 【场景演示】G1如何管理region分区大小的? │ └── [ 32M] 3-

15 本章小结 ├── 4-JVM基础原理篇-带你深入拆解垃圾回收原理/ │ ├── [ 46M] 4-1 从收拾房间看垃圾回收基本思想 │ ├── [ 12M] 4-2 【原理精讲】图解垃圾标记算法的原理 │ ├── [ 24M] 4-3 【原理精讲】图解垃圾清除算法的原理 │ ├── [ 39M] 4-4 【原理精讲】解密新生代垃圾回收器的工作原理 │ ├── [ 68M] 4-5 【场景实战】熟悉Serial垃圾回收器的使用 │ ├── [ 93M] 4-6 【场景实战】透彻理解GC日志的内容 │ ├── [ 26M] 4-7 【场景实战】透彻掌握ParNew垃圾回收器的原理与使用screenflow │ ├── [ 26M] 4-8 【场景实战】透彻掌握Parallel垃圾回收器的使用方法 │ ├── [ 30M] 4-9 【原理精讲】一步一图了解老年代垃圾回收器CMS的基本工作过程 │ ├── [129M] 4-

10 【场景实战】深入实战CMS垃圾回收执行过程 │ └── [ 42M] 4-

11 本章小结 ├── 5-JVM基础原理篇-带你深入拆解G1垃圾回收原理/ │ ├── [ 45M] 5-1 一统天下的G1垃圾回收器概述 │ ├── [ 18M] 5-2 图解G1垃圾回收器YGC的基本原理与执行过程 │ ├── [ 78M] 5-3 【场景演示】通过GC日志理解YGC基本过程 │ ├── [ 53M] 5-4 【原理精讲】停顿预测模型与垃圾区域选择原理 │ ├── [ 47M] 5-5 【原理精讲】深入理解混合回收工作原理与执行过程 │ ├── [115M] 5-6 【场景演示】通过GC日志理解混合回收工作过程 │ ├── [ 30M] 5-7 【原理精讲】深入理解FullGC工作原理与执行过程 │ ├── [ 48M] 5-8 【故障实战】大对象导致视频无法观看故障实战 │ ├── [ 50M] 5-9 为什么sublist会导致系统OOM? │ └── [ 33M] 5-

10 本章总结 ├── 6-JVM征服面试篇—JMM经典面试题/ │ ├── [ 77M] 6-1 征服面试篇与JVM常见面试题介绍 │ ├── [153M] 6-2 盘点JMM经典面试题 │ ├── [149M] 6-3 算法面试之泪—Java如何构造链表? │ ├── [108M] 6-4 算法面试之泪—Java如何管理单链表? │ ├── [130M] 6-5 你知道深拷贝和浅拷贝的原理吗? │ ├── [ 68M] 6-6 初识常量池 — Java是如何存整数和字符串的& │ ├── [ 96M] 6-7 String的存储特征与字符串常量池初探- │ ├── [ 33M] 6-8 equals()源码与算法面试里考察字符串基本问题 │ ├── [ 65M] 6-9 字符串拼接的“约法三章” │ ├── [102M] 6-

10 找对象,你能抗住几轮打击? │ ├── [ 71M] 6-

11 透彻理解intern方法 │ └── [ 54M] 6-

12 本章总结 ├── 7-JVM征服面试篇—亿级流量系统的JVM高性能与稳定性解决方案/ │ ├── [ 10M] 7-1 面试中如何证明你能设计亿级流量系统? │ ├── [ 34M] 7-2 以百万结算系统为例分析如何拆解亿级流量系统 │ ├── [ 19M] 7-3 亿级系统设置年轻代(ParNew+CMS) │ ├── [ 24M] 7-4 亿级流量系统如何优化老年代ParNew_CMS? │ ├── [ 30M] 7-5 总结两套JVM配置模板 │ ├── [ 13M] 7-6 G1为什么更适合亿级流量系统以及YGC优化策略screenflow │ ├── [ 22M] 7-7 亿级流量场景下如何优化混合回收? │ └── [ 12M] 7-8 本章总结 ├── 8-JVM征服面试篇—内存溢出/ │ ├── 【更多it资源 www.】 │ ├── [ 10M] 8-1 程序员的噩梦—OOM │ ├── [ 18M] 8-2 元空间内存溢出分析与实战 │ ├── [ 32M] 8-3 获得内存溢出的利器—内存快照 │ ├── [ 19M] 8-4 微博案例 – RPC超时导致Tomcat 内存溢出 │ ├── [ 27M] 8-5 美团案例 – SQL书写错误导致内存溢出 │ ├── [ 12M] 8-6 亿级流量系统里定时任务发生内存溢出分析 │ └── [8.7M] 8-7 课程总结 ├── 9-JVM征服面试篇—内存泄露/ │ ├── [ 12M] 9-1 内存泄露原理分析与常见场景介绍 │ ├── [ 26M] 9-2 中间件不好做 – 自定义栈导致内存泄露实践 │ ├── [ 19M] 9-3 静态集合与长生命周期对象引起内存泄露实践 │ ├── [ 37M] 9-4 改变已经放入集合中的对象属性(Hashcode值)引发内存泄露 │ ├── [ 16M] 9-5 内部类持有外部类导致内存泄露 │ ├── [ 27M] 9-6 单例模式持有复杂对象导致内存泄露 │ ├── [ 38M] 9-7 理解强软弱虚四种引用的作用 │ └── [ 10M] 9-8 本章总结 ├── 10-JVM实践篇-JVM基本工具与必会调试方式/ │ ├── [ 18M] 10-1 如何进行JVM调优 │ ├── [ 29M] 10-2 掌握三个基本的工具:jps、jiinfo和jstat │ ├── [ 28M] 10-3 jstack命令与快速定位死锁线程 │ ├── [ 16M] 10-4 堆分析的基本功-jmap和jhat工具 │ ├── [ 34M] 10-5 如何利用Jconsole和VisualVM来监控程序的执行信息 │ ├── [ 57M] 10-6 一起来梳理JVM的参数与如何手动获取JVM参数 │ └── [ 12M] 10-7 课程总结 ├── 11-JVM实践篇—Arthas高效的监控工具/ │ ├── [ 23M] 11-1 arthas介绍 │ ├── [ 23M] 11-2 arthas的基础命令与基本操作 │ ├── [ 50M] 11-3 如何使用arthas监控线上服务的内存状态 │ ├── [ 32M] 11-4 如何使用arthas监控载入的类信息screenflow │ ├── [ 46M] 11-5 如何使用arthas追踪方法的执行情况screenflow │ ├── [ 42M] 11-6 轻松绘制火焰图 │ └── [ 26M] 11-7 本章总结 ├── 12-JVM高级篇—JVM支持高并发底层原理精讲/ │ ├── [ 19M] 12-1 想透彻掌握高并发—从理解JVM开始 │ ├── [ 52M] 12-2 从线程的开闭看JVM的作用 │ ├── [ 41M] 12-3 原子性问题的产生原因与解决方案 │ ├── [ 28M] 12-4 CAS与乐观锁原理 │ ├── [ 22M] 12-5 可见性问题的本质 │ ├── [ 71M] 12-6 顺序性问题的本质和volatile的源码实现原理screenflow │ ├── [ 41M] 12-7 Java里的对象到底是什么 │ ├── [ 40M] 12-8 synchronized锁的状态与实现原理 │ └── [6.5M] 12-9 本章小结 ├── 13-JVM高级篇—透彻理解字节码以及指令/ │ ├── [ 26M] 13-1 字节码与指令概述 │ ├── [ 29M] 13-2 JVM编译基本原理 │ ├── [ 85M] 13-3 字节码解析上——魔数、版本和常量池解析原理- │ ├── [ 49M] 13-4 字节码解析下—访问标记、字段、方法和属性解析原理 │ ├── [ 29M] 13-5 字节码指令初步以及加载存储指令 │ ├── [ 30M] 13-6 控制转移指令 │ ├── [ 13M] 13-7 对象创建指令 │ ├── [ 36M] 13-8 方法调用与lambda表达式基本原理screenflow │ ├── [ 11M] 13-9 synchronized指令 │ └── [ 11M] 13-

10 本章总结 ├── 14-JVM高级篇——字节码的应用远比你想到的多/ │ ├── [ 13M] 14-1 字节码的应用远超你的想象 │ ├── [ 74M] 14-2 ASM介绍与读取字节码实战 │ ├── [ 67M] 14-3 基于ASM增加属性实战 │ ├── [ 42M] 14-4 使用asm编辑方法实战 │ ├── [ 20M] 14-5 Javassit介绍与操作字节码案例 │ ├── [ 44M] 14-6 Javassit模拟实现lombok框架 │ ├── [ 39M] 14-7 反射之一透彻理解反射的作用 │ ├── [ 51M] 14-8 反射之二反射管理类信息案例实战 │ ├── [ 37M] 14-9 反射之三反射修改类信息案例实战 │ ├── [ 20M] 14-

10 反射之四通过反射调用类方法实战 │ ├── [ 30M] 14-

11 代理之一代理思想介绍screenflow │ ├── [ 27M] 14-

12 代理之二基于JDK实现动态代理实战 │ ├── [ 21M] 14-

13 代理之三基于CGlib实现动态代理实战 │ ├── [ 19M] 14-

14 字节码技术在FastJson里的应用案例 │ └── [7.0M] 14-

15 本章小结 ├── 15-JVM源码阅读篇—透彻理解对象是如何创建与回收的/ │ ├── [ 24M] 15-1 JVM源码整体介绍与学习建议 │ ├── [ 32M] 15-2 JVM的启动入口与生命周期 │ ├── [ 60M] 15-3 一图理解JVM初始化过程 │ ├── [ 50M] 15-4 对象的二分模型与初始化过程 │ ├── [ 34M] 15-5 元空间是怎么存储类信息的 │ ├── [ 70M] 15-6 JVM的堆到底是什么 │ ├── [ 13M] 15-7 G1对象分配的完整流程与后续学习说明screenflow │ ├── [ 65M] 15-8 G1垃圾回收器管理region分区底层实现源码 │ ├── [ 26M] 15-9 初识TLAB机制与对象分配底层原理 │ ├── [ 11M] 15-

10 指针碰撞与哑元对象 │ ├── [ 11M] 15-

11 对象分配方式上—快速分配和慢分配 │ ├── [ 12M] 15-

12 对象分配方式中—大对象分配 │ ├── [ 11M] 15-

13 对象分配方式下—对象分配的最终分配 │ └── [ 38M] 15-

14 本章总结 ├── 16-JVM新技术篇——ZGC:新一代垃圾回收器/ │ ├── [ 10M] 16-1 开疆拓土的ZGC垃圾回收器介绍- │ ├── [ 14M] 16-2 ZGC的内存布局与多视图映射基本原理 │ ├── [7.1M] 16-3 ZGC重要特征之——支持NUMA- │ ├── [ 15M] 16-4 ZGC 垃圾回收基本流程 │ ├── [ 31M] 16-5 ZGC垃圾回收完整过程 │ └── [ 11M] 16-6 本章总结 ├── 17-课程总结/ │ └── [ 41M] 17-1 课程总结