posts

《Java 并发编程·性能诊断与事故》 · 全书目录与章节索引(50 篇)

《Java 并发编程·性能诊断与事故》全 50 篇:从 Amdahl 与 USL 的性能模型、JMH 与系统压测、JFR 与线程转储,到死锁活锁、池容量与虚拟线程、JCStress 与 Lincheck、可见性缺陷、队列 OOM、线程与 TCCL 泄漏、跨资源锁、指标告警、GC 与分配、容器配额与 CFS 节流,最后落在编码规范、评审清单与验收报告,附本机实测输出。

全书概览

项目内容
书稿《Java 并发编程·性能诊断与事故》
篇数50 篇(15 章 45 节 + 序、前言、目录 + 附录 A/B)
领域性能模型、基准与压测、诊断工具、锁故障、容量规划、虚拟线程、正确性验证、资源事故、可观测性、GC、容器化、工程规范
贯穿项目libraryd-conc —— 本卷把它压到队列满、锁热点、泄漏与配额不足的场景里
阅读方式从目录篇 进入按顺序通读,或按症状跳读
主线版本JDK 25 LTS(Temurin 25.0.5+8)、Maven 3.9.12
关键依赖JCStress 0.16、JMH 1.37、JFR(JDK 内置)、colima 容器(Docker 29.5.2)
上级专题书稿专题

三卷分工

卷书名关注点
卷一《Java 并发编程·线程与内存模型》会写正确的并发代码
卷二《Java 并发编程·JUC 源码与容器》知道 JUC 为什么这样实现
卷三《Java 并发编程·性能诊断与事故》能压、能查、能救火

本卷不重复卷一的内存模型推导与卷二逐行读源码的内容;需要用到处会写「卷一第 N 章」或「卷二第 N 章」。

全书目录

前置

节文章核心内容
—序:规则在压力下才见真章三类失效、诊断闭环、本书口径
—前言:实验环境、工具与数据口径机器、JMH/JFR/JCStress、示例值与实测值的标注规则
—目录与学习路径三条路径、五部分、与卷一/卷二衔接

第一部分:性能模型、基准与诊断工具(第 1–3 章)

节文章核心内容
1.11.1 Amdahl 与 USL:扩展性的天花板串行比例、一致性延迟、公式的适用边界
1.21.2 上下文切换、调度延迟与 CPU 配额切换成本、容器配额、线程数增加后的吞吐变化
1.31.3 吞吐、时延与并发的三角平均 vs 分位、排队论直觉、尾延迟
2.12.1 JMH 的正确姿势@State 作用域、@Fork、Blackhole、误差列
2.22.2 微基准的陷阱死代码消除、常量折叠、循环展开、预热
2.32.3 从微基准到系统压测微基准能回答什么、不能回答什么
3.13.1 JFR 的 Monitor 事件jdk.JavaMonitorEnter、阈值、jfr view
3.23.2 async-profiler 的锁与分配火焰图安装、-e lock、-e alloc、读图方法
3.33.3 线程转储的读法Thread.print -l、BLOCKED、锁持有者、虚拟线程

第二部分:活性、容量与规模化(第 4–6 章)

节文章核心内容
4.14.1 死锁的四个必要条件与检测四个条件、findDeadlockedThreads、转储判读
4.24.2 活锁、饥饿与优先级反转重试碰撞、写饥饿、优先级在 JVM 与 OS 两侧
4.34.3 锁顺序规范与超时兜底全局层号、反向边检测、tryLock 超时
5.15.1 Little’s law 在池化中的应用L = λW、并发与时延的换算、余量系数
5.25.2 CPU 密集与 IO 密集的池大小N+1、N×(1+W/C)、实测校核
5.35.3 队列长度、拒绝率与降级有界队列、CallerRuns、降级策略
6.16.1 十万/百万虚拟线程实测创建耗时、堆占用、载体数、转储体积
6.26.2 pinning 的诊断与消除JDK 25 仍会 pin 的三类场景、JFR 阈值陷阱
6.36.3 连接池、ThreadLocal 与 MDC池仍受限、Semaphore 兜底、上下文传递

第三部分:模型对比、正确性测试与可见性(第 7–9 章)

节文章核心内容
7.17.1 Reactor 的线程模型回顾事件循环、非阻塞、背压
7.27.2 两种模型的取舍矩阵团队、调试、生态、阻塞调用、尾延迟
7.37.3 混合栈的边界与调试阻塞调用隔离、线程池边界、trace 传递
8.18.1 JCStress 的测试模型状态、actor、arbiter、结果分级
8.28.2 Lincheck 的线性一致性检查线性化点、场景生成、报告解读
8.38.3 竞态复现、最小化与回归缩小状态、固定种子、CI 策略
9.19.1 过期读与无限循环JIT 提升、-Xint 对照、volatile 修复
9.29.2 安全发布失败的对象构造逸出、部分初始化、final 冻结
9.39.3 从事故到 happens-before 归因证据链、归因表、修复验证

第四部分:队列线程事故、锁边界与可观测性(第 10–12 章)

节文章核心内容
10.110.1 队列堆积与 OOM无界队列、生产慢于消费、堆直方图
10.210.2 拒绝策略引发的雪崩四种拒绝策略对照、重试放大、静默丢弃
10.310.3 线程泄漏与上下文类加载器线程未退出、TCCL 持有、distinctTCCL 计数
11.111.1 数据库行锁与 Java 锁的叠加锁顺序、事务边界、连接池占用
11.211.2 分布式锁的租约与续期租约、时钟漂移、fencing token
11.311.3 锁粒度、热点与拆分分段、分片、无锁化,以及分位数的假象
12.112.1 线程与池的指标口径active/queue/completed/reject、getter 开销
12.212.2 阻塞点与调用链结合阻塞耗时、线程到请求的映射、采样
12.312.3 告警阈值与容量水位分位、饱和度、告警分级与去抖

第五部分:GC、容器与工程规范(第 13–15 章)

节文章核心内容
13.113.1 分配速率、TLAB 与逃逸分配速率、TLAB、标量替换
13.213.2 并发标记与业务线程写屏障、标记线程占用、停顿
13.313.3 低延迟 GC 下的并发设计分配控制、对象复用、伪共享
14.114.1 availableProcessors 与 CPU 配额容器感知、ActiveProcessorCount、CFS 节流
14.214.2 内存限制、线程栈与容器 OOM-Xss、MaxRAMPercentage、OOM 的几种类型
14.314.3 K8s 下的并发参数基线requests/limits、池大小、探针与退出
15.115.1 编码规范与静态检查命名与可见性、锁顺序、禁止项、扫描规则
15.215.2 Code Review 清单20 条评审问题、后果分级、三段式评论
15.315.3 libraryd 并发验收与压测报告场景、指标、通过判据、遗留风险

附录

篇文章核心内容
A附录 A 诊断命令速查线程、JFR、内存、CPU 与容器 cgroup 的命令与判读
B附录 B JCStress/JMH/压测模板三个可复制、可运行的模板

三条阅读路径

路径适合谁怎么走
顺序通读想建立完整的诊断能力1.1 → 15.3,约 35 小时
症状驱动手上正有一个故障先看目录篇 的「症状 → 章节」对照表
值班查表正在处理线上问题附录 A 命令 + 第 12 章指标口径 + 4.3 锁顺序

相关专题

全部文章 game Indie Java golang Books 客户端开发 Minigame Saas rust Python