很多人对 JVM 的理解停留在"解释执行 + 垃圾回收"的层面,却忽略了真正决定吞吐上限的那一层——即时编译器(JIT Compiler)。HotSpot 之所以能在长时间运行后逼近甚至反超静态编译语言,靠的不是把字节码逐条翻译成机器码这么简单,而是一整套基于运行时反馈的激进优化:分层编译、内联、逃逸分析、标量替换、同步消除。这些优化彼此咬合,任何一环失效都可能让后续优化整条链断裂。
本文不打算把 JIT 讲成教科书,而是从生产排障的视角出发,讲清楚三个问题:这些优化在什么条件下才会发生、如何验证它真的发生了、以及它失效时的典型症状是什么。
2023/1/14大约 10 分钟