飞豹客 · 课能看,资料也能带走
飞豹客后端开发 会员免费

宋红康_JVM从入门到精通

很多人对 JVM 的印象停留在"面试要背"和"线上出问题才想起来"这两件事上。这门课要解决的,正是这两个场景之间的落差:让你从"知道有堆和栈"变成能看懂内存溢出报错、能判断一次 Full GC 是不是异常、能说清一个对象从创建到回收到底经过了什么。它不讲空泛的架构图,主要围绕 HotSpot 虚拟机

单课价¥19.90新品 上架
会员价 会员免费开通会员后本篇可直接下载套餐详情
144 人关注 更新于 2026-03-27 永久有效
发货

网盘链接 · 支付成功后自动发货

保障

永久有效 · 链接失效免费补发

客服

每日 9:00-21:00 在线客服 联系客服

会员可免费下载本篇月会员、年会员、永久会员可免费领取。

开通会员 ›
购买本课销量 0 · 永久有效
会员价 · 单课标价 ¥19.90

会员 · 按档位

永久免费可领
年免费可领
月免费可领

游客按标价购买,不享受上表折扣。

支付成功后自动发放网盘链接,链接失效可找客服免费补

正版保障 极速发货 售后无忧

很多人对 JVM 的印象停留在"面试要背"和"线上出问题才想起来"这两件事上。这门课要解决的,正是这两个场景之间的落差:让你从"知道有堆和栈"变成能看懂内存溢出报错、能判断一次 Full GC 是不是异常、能说清一个对象从创建到回收到底经过了什么。它不讲空泛的架构图,主要围绕 HotSpot 虚拟机的真实运行机制展开。

先看运行时数据区,再碰垃圾回收

如果你基础一般,别从第一章顺着往下刷,也别一上来就啃垃圾回收器。建议先看运行时数据区这一块:程序计数器、虚拟机栈、本地方法栈、堆、方法区,以及直接内存。这部分是后面所有内容的地基,栈帧怎么进出、局部变量表放什么、对象在堆里怎么布局,搞清楚了,看 GC 日志才不会是看天书。类加载子系统可以放在这一块之后看,理解加载、链接、初始化三个阶段,对后面排查类冲突、静态代码块执行顺序这类问题很有用。

垃圾回收部分建议拆成两轮。第一轮看算法和概念,分代收集、可达性分析、引用类型这些,先建立判断标准;第二轮再看具体收集器,重点理解不同收集器的取舍逻辑,而不是死记参数。执行引擎和 StringTable 可以放在最后,作为补充。

适合什么基础,学完能做什么

这门课默认你已经会写 Java,能看懂基本的类和对象,不需要你事先了解字节码或汇编。如果你连栈和堆的区别都说不清,建议先补 Java 基础再来。反过来,如果你已经工作两三年,只想查漏补缺,可以跳过前面几章,直接从内存布局和垃圾回收切入。

学完之后,你应该能独立完成几件事:拿到一段 OOM 报错,知道是堆溢出、栈溢出还是方法区溢出,并大致定位方向;能读懂 GC 日志里的关键信息,判断一次停顿是否正常;能说清一个对象从实例化、内存布局到访问定位的完整链路。这些能力在排查线上问题时是直接能用的,也是面试里区分"背过"和"懂了"的地方。

资料怎么配合练习

配套的代码和笔记不要只当参考放着。每看完一章,建议自己动手跑一遍对应代码,尤其是内存溢出和 GC 相关的示例,亲手触发一次报错,比看十遍讲解印象深。笔记部分可以自己截图整理,重点记你当时没想通的地方,而不是抄目录。PDF 适合当查阅手册,遇到具体概念再回去翻,不建议从头读到尾。工具方面,课上会用到一些命令行和可视化工具,跟着操作一遍,把观察内存和线程的习惯养起来,这比记住结论更有长期价值。

课程目录

第 1 部分8 集
  • 08.尚硅谷_宋红康_JVM从入门到精通  📁 如需课程笔记,可以截图自制  📁 视频  📄 代码.zip
  •  📄 软件下载地址.txt  📄 尚硅谷_JVM从入门到精通.pdf
  •  📄 资料.zip
  •    📁 第13章:StringTable    📁 第12章:执行引擎    📁 第14章:垃圾回收概述    📁 第11章:直接内存    📁 第8章:堆    📁 第9章:方法区    📁 第5章:虚拟机栈    📁 第1章:JVM与Java体系结构    📁 第7章:本地方法栈    📁 第16章:垃圾回收相关概念    📁 第2章:类加载子系统【更多课程-www.youxuan68.com】    📁 第3章:运行时数据区概述及线程    📁 第10章:对象的实例化内存布局与访问定位    📁 第17章:垃圾回收器    📁 第15章:垃圾回收相关算法【更多课程-www.youxuan68.com】    📁 第6章:本地方法接口    📁 第4章:程序计数器      📄 114-HotspotVM为何解释器与JIT编译器并存.avi      📄 111-Java程序的编译和解释运行的理解.avi      📄 115-热点代码探测确定何时JIT.avi      📄 110-执行引擎的作用及工作过程概述.avi      📄 112-机器码_指令_汇编_高级语言理解与执行过程.avi      📄 113-解释器的使用.avi      📄 117-Graal编译器与AOT编译器.avi      📄 116-Hotspot设置模式_C1与C2编译器.avi      📄 120-String内存结构的分配位置.avi      📄 127-关于intern()的面试难题.avi      📄 124-拼接操作与append操作的效率对比.avi      📄 130-intern()的课后练习2.avi      📄 119-String底层Hashtable结构的说明.avi      📄 131-intern()的空间效率测试.avi      📄 133-G1垃圾收集器的String去重操作.avi      📄 128-面试的拓展问题.avi      📄 118-String的不可变性.avi      📄 125-intern()的理解.avi      📄 129-intern()的课后练习1.avi      📄 121-两个案例熟悉String的基本操作.avi      📄 123-字符串变量拼接操作的底层原理.avi      📄 132-StringTable的垃圾回收测试.avi      📄 126-new String()到底创建了几个对象.avi      📄 122-字符串拼接操作的面试题讲解.avi      📄 136-了解早期垃圾回收行为.avi      📄 135-什么是GC,为什么需要GC.avi      📄 134-垃圾回收相关章节的说明.avi      📄 137-Java自动内存管理介绍.avi      📄 107-直接内存的简单体验.avi      📄 108-使用本地内存读写数据的测试.avi      📄 109-直接内存的00M与内存大小的设置.avi      📄 23-Microsoft JVM和TaobaoJVM.avi      📄 06-跨平台的语言Java和跨语言的平台JVM.avi      📄 12-Java代码执行流程.avi      📄 04-面向人群和课程特点.avi      📄 19-IBM J9 VM的介绍.avi      📄 16-Exact VM的介绍.avi      📄 08-Java及JVM历史上的重大事件.avi      📄 03-为什么要学习JVM.avi      📄 21-Azul VM和BEA Liquid VM的介绍.avi      📄 18-JRockit VM的介绍.avi      📄 09-虚拟机与Java虚拟机介绍.avi      📄 15-SUN Classic VM的介绍.avi      📄 02-如何看待Java上层技术与JVM.avi      📄 20-KVM、CDC、CLDC的介绍.avi      📄 10-JVM的位置.avi      📄 22-Apache Harmony的介绍.avi      📄 24-Dalvik VM及其他虚拟机的介绍.avi      📄 13-区分栈的指令集架构和寄存器的指令集架构.avi      📄 05-官方规范下载与参考书目.avi      📄 25-Graal VM的介绍.avi      📄 07-字节码与多语言混合编程.avi      📄 14-JVM的生命周期.avi      📄 01-JVM内存与垃圾回收篇概述.avi      📄 11-JVM的整体结构.avi      📄 17-HotSpot VM的介绍.avi      📄 92-方法区的内部结构1.avi      📄 100-方法区的垃圾回收行为.avi      📄 98-StringTable为什么要调整位置.avi      📄 87-方法区概述_栈堆方法区间的交互关系.avi      📄 93-方法区的内部结构2.avi      📄 97-方法区在jdk6、jdk7、jdk8中的演进细节.avi      📄 91-OOM:PermGen和OOM:Metaspace举例.avi      📄 95-运行时常量池的理解.avi      📄 96-图示举例方法区的使用.avi      📄 99-如何证明静态变量存在哪.avi      📄 88-方法区的基本理解.avi      📄 94-class文件中常量池的理解.avi      📄 89-Hotspot中方法区的演进.avi      📄 101-运行时数据区的总结与常见大厂面试题说明.avi      📄 90-设置方法区大小的参数.avi      📄 61-栈桢中的一些附加信息.avi      📄 51-静态变量与局部变量的对比及小结.avi      📄 59-方法重写的本质与虚方法表的使用.avi      📄 47-栈桢的内部结构.avi      📄 50-变量槽slot的理解与演示.avi      📄 45-虚拟机栈的常见异常与如何设置栈大小.avi      📄 53-涉及操作数栈的字节码指令执行分析.avi      📄 46-栈的存储结构和运行原理.avi      📄 62-虚拟机栈的5道面试题.avi      📄 54-栈顶缓存技术.avi      📄 56-方法的绑定机制:静态绑定与动态绑定.avi      📄 49-字节码中方法内部结构的剖析.avi      📄 52-操作数栈的特点.avi      📄 44-虚拟机栈的主要特点.avi      📄 57-4种方法调用指令区分非虚方法与虚方法.avi      📄 60-方法返回地址的说明.avi      📄 55-动态链接的理解与常量池的作用.avi      📄 58-invokedynamic指令的使用.avi      📄 48-局部变量表结构的认识.avi      📄 70-OOM的说明与举例.avi      📄 76-MinorGC、MajorGC和FullGC的对比.avi      📄 82-通过逃逸分析看堆空间的对象分配策略.avi      📄 71-新生代与老年代中相关参数的设置.avi      📄 78-体会堆空间分代的思想.avi      📄 79-总结内存分配策略.avi      📄 69-堆空间大小的设置和查看.avi      📄 65-JVM学习路线与内容回顾.mp4
  •      📄 77-GC举例与日志分析.avi      📄 67-堆空间关于对象创建和和GC的概述.mp4
  •      📄 66-堆空间的概述_进程中堆的唯一性.mp4
  •      📄 86-代码优化及堆的小结.avi      📄 74-代码举例与JVisualVM演示对象的分配过程.avi      📄 72-图解对象分配的一般过程.avi      📄 68-堆的细分内存结构.mp4
  •      📄 83-代码优化之栈上分配.avi      📄 84-代码优化之同步省略.avi      📄 80-堆空间为每个线程分配的TLAB.avi      📄 75-常用优工具概述与Jprofiler的演示.avi      📄 81-小结堆空间的常用参数设置.avi      📄 73-对象分配的特殊情况.avi      📄 85-代码优化之标量替换.avi      📄 39-运行时数据区内部结构.avi      📄 40-JVM中的线程说明.avi      📄 36-双亲委派机制的优势.avi      📄 28-类的加载过程一:Loading.avi      📄 38-类的主动使用与被动使用等.avi      📄 26-内存结构概述.avi      📄 27-概述类的加载器及类加载过程.avi      📄 33-为什么需要用户自定义类加载器及具体实现.avi      📄 31-几种类加载器的使用体会.avi      📄 32-引导类、扩展类、系统类加载器的使用及演示.avi      📄 29-类的加载过程二:Linking.avi      📄 30-类的加载过程三:Initialization.avi      📄 34-ClassLoader的常用方法及获取方法.avi      📄 37-沙箱安全机制.avi      📄 35-双亲委派机制的工作原理及演示.avi      📄 64-本地方法栈的理解.avi      📄 157-内存溢出的分析.avi      📄 156-手动gc理解不可达对象的回收行为.avi      📄 158-内存泄漏的分析.avi      📄 164-强引用:不回收.avi      📄 154-垃圾回收相关概念的概述.avi      📄 168-终结器引用的介绍.avi      📄 167-虚引用:对象回收跟踪.avi      📄 160-程序的并行与并发.avi      📄 165-软引用:内存不足即回收.avi      📄 166-弱引用:发现即回收.avi      📄 161-垃圾回收的并行与并发.avi      📄 163-Java中几种不同引用的概述.avi      📄 162-安全点与安全区域的说明.avi      📄 155-System.gc()的理解.avi      📄 159-StopTheWorld事件的理解.avi      📄 104-对象创建的六个步骤.avi      📄 103-字节码角度看对象的创建过程.avi      📄 106-对象访问定位.avi      📄 105-对象的内存布局.avi      📄 102-对象实例化的几种方式.avi      📄 63-本地方法接口的理解.avi      📄 196-常用的显示GC日志的参数.avi      📄 201-革命性的ZGC的性能介绍.avi      📄 195-7种经典的垃圾回收器总结与调优建议.avi      📄 184-CMS垃圾回收器的参数设置.avi      📄 176-Serial与Serial Old垃圾回收器的介绍.avi      📄 179-如何设置使用ParNew垃圾回收器.avi      📄 202-其他的厂商的垃圾回收器.avi      📄 170-垃圾回收器的分类.avi      📄 181-Parallel垃圾回收器的相关参数设置.avi      📄 188-G1的参数设置.avi      📄 174-垃圾回收器的组合关系.avi      📄 175-如何查看默认的垃圾回收器.avi      📄 189-G1在生产环境的适用场景.avi      📄 185-CMS的小结及后续JDK版本中的变化.avi      📄 199-日志分析工具的使用.avi      📄 186-认识G1垃圾回收器.avi      📄 187-G1垃圾回收器的优势和不足.avi      📄 178-ParNew垃圾回收器的介绍.avi      📄 171-GC性能指标的整体说明.avi      📄 197-GC日志中垃圾回收数据的分析.avi      📄 172-吞吐量与暂停时间的对比说明.avi      📄 180-Parallel与Parallel Old垃圾回收器的介绍.avi      📄 194-G1垃圾回收的优化建议.avi      📄 198-举例说明日志中堆空间数据如何解读.avi      📄 192-记忆集与写屏障.avi      📄 169-垃圾回收器章节概览.avi      📄 200-新时期的Epsilon和Shenandoah垃圾回收器.avi      📄 183-CMS的特点与弊端分析.avi      📄 193-G1垃圾回收过程的详细说明.avi      📄 191-G1垃圾回收器的主要回收环节.avi      📄 173-垃圾回收器的发展迭代史.avi      📄 190-region的使用介绍.avi      📄 203-最后寄语.avi      📄 182-CMS垃圾回收器概述与工作原理.avi      📄 177-如何设置使用Serial垃圾回收器.avi      📄 142-对象的finalization机制.avi      📄 153-分区算法的说明.avi      📄 145-使用JProfiler进行GC Roots溯源.avi      📄 146-使用JProfiler分析OOM.avi      📄 140-Java代码举例_Python的引用计数实施方案.avi      📄 141-可达性分析算法与GC Roots.avi      📄 148-复制算法原理及优缺点.avi      📄 151-分代收集算法的说明.avi      📄 149-标记-压缩算法原理及优缺点.avi      📄 139-引用计数算法的原理及优缺点.avi      📄 138-垃圾回收相关算法概述.avi      📄 150-不同指标上对比三种算法.avi      📄 143-代码演示可复活的对象.avi      📄 144-使用MAT查看GC Roots.avi      📄 152-增量收集算法原理及优缺点.avi      📄 147-标记-清除算法原理及优缺点.avi      📄 43-解决PC寄存器两个面试问题.avi      📄 41-PC寄存器概述.avi      📄 42-PC寄存器的使用举例.avi