- 文集信息
- 目录大纲
- 最新文档
- 知识宇宙
文集详情
文集导读
「OOM」大概是 Java 工程师在日志里最不愿撞见的行话,紧随其后的还有 Full GC、停顿、泄漏、死锁这些术语——它们全都指向 Java 虚拟机的内部。
这份教程想做的事情,是把你日常打交道的这台虚拟机抬上解剖台。解剖台的好处是直白:皮肤掀开,哪里是内存区、哪里是线程、对象在哪诞生又在哪被清走、故障的病灶长什么样,全都摊开看。我们不打算背规范条文,而是按"这台机器怎么运作、坏了怎么查"的顺序,把 JVM 的内存区划分、对象流转、类装载、执行引擎、垃圾回收、监控调优、线程调度逐层切开给你看。等读完,你看到的将不再是一个黑盒,而是一台零件摆放清楚、每个接口都能探进去摸一摸的机器。
整套教程默认的运行环境以 HotSpot 为准——它是世上装机量最大的 JVM 实现,也是绝大多数生产事故的发生地。版本横跨 JDK 8 到 JDK 21:旧版本讲得清历史来路,新版本代表现在的默认选择。文中所有示例代码和命令行会话,你都可以在自己机器上复现,手边有个能跑 java -version 的终端就够了。
这册书怎么组织
全册按解剖顺序分为七章,章节之间存在明确的学习依赖:先认识机器全貌,再切内存、跟对象、看执行、析回收,最后学查病和看线程。知识地图如下,箭头表示"先学这边,再看那边"会更省力。
第一章是解剖台总览:交代这台机器吃什么(字节码)、市面上有哪些主要型号(HotSpot、OpenJ9、GraalVM)、以及怎么读 JVMS 规范这张官方图谱。第二章切内存:堆、方法区、虚拟机栈、程序计数器、直接内存,一块一块看位置和分工,这是后面理解 GC 和调参的地基。第三章看类怎么进柜:装载、链接、初始化的完整流程,类加载器与双亲委派的秩序,以及动态代理这种"术中造器官"的技术。第四章看执行引擎:字节码怎么被解释执行,热点代码怎么被 JIT 编译器晋升优化,AOT 又提供了什么不同的开局方式。
第五章是重头戏——垃圾回收:死亡怎么判定、尸体怎么清运、历代收集器如何演化、GC 日志怎么读懂。第六章教你给机器做体检:jstat、jmap、jstack、jcmd 四件套的用法,JFR 连续取样,四类典型病灶的诊断路径,以及参数体系怎么开处方(含容器环境)。第七章切线程:Java 内存模型与 happens-before 规则、volatile 与 synchronized 的底层实现、锁的三级升级路径,直到虚拟线程对调度方式的改写。
读完你会得到什么
到最后一章收尾时,你应该能独立完成这些事:画出一台正在运行的 JVM 的内存布局,并说清某个对象此刻大概躺在哪个区;拿到一段 GC 日志,判断收集器类型、回收效果和是否有异常迹象;遇到 CPU 飙升或内存缓涨,知道先用哪个命令、抓哪份快照、按什么顺序排除;给一个容器化 Java 服务设置合理的内存上限和垃圾收集器,并说清理由;看懂字节码层面的 synchronized 和 volatile 到底做了什么。
怎么使用这份教程
建议顺序阅读,但第六章可以提前翻——它是纯粹的排错工具箱,遇到线上问题随时查。每节都配有可运行的代码或命令行会话,强烈建议边读边敲:解剖学是看会的,更是摸会的。文中示例输出基于特定 JDK 版本,你机器上的数字会不同,请关注结构和趋势而非具体数值。每章末尾的支柱页会回答"这一章解决什么问题、读完能做什么",方便你随时校准位置。
准备好了就把第一章的第一页翻开——手术灯已经打开,器械已消毒,台上的这台机器等着被看清。
目录大纲
最新文档
知识宇宙
正在加载知识图谱...