HotSpot C2 逃逸分析与标量替换:对象生命周期与栈上分配的边界
高并发服务中短生命周期对象常被当作 GC 压力的来源,但 C2 的逃逸分析与标量替换能在编译期消除一部分分配。本文解释 NoEscape、ArgEscape、GlobalEscape 的判定过程,标量替换的成立条件,与 TLAB 的关系,以及哪些代码写法会让对象无法被拆解。
共 1 篇文章
高并发服务中短生命周期对象常被当作 GC 压力的来源,但 C2 的逃逸分析与标量替换能在编译期消除一部分分配。本文解释 NoEscape、ArgEscape、GlobalEscape 的判定过程,标量替换的成立条件,与 TLAB 的关系,以及哪些代码写法会让对象无法被拆解。