JVM的空间分配担保机制(Space Allocation Guarantee)是Java虚拟机在执行Minor GC(新生代垃圾回收)之前,为了确保老年代有足够空间接纳可能从新生代晋升(Promotion)过来的对象,而进行的一种安全检查和风险评估策略。 简单来说,这就是JVM在执行新生代清理前买的一份“保险”,用来防止“清理到一半发现老年代装不下”的尴尬局面。 下面我将从背景、原理、流程以及版本变更四个方面为你详细拆解: --- 1. 为什么需要空间分配担保?(背景) 在JVM的内存模型中,新生代分为 Eden 区和两个 Survivor 区(默认比例 8:1:1)。 当发生 Minor GC 时,存活的对象会被复制到 Survivor 区。但是: 1. Survivor区很小:如果某次 Minor GC 后存活的对象特别多,Survivor 区装不下。 2. 直接晋升:装不下的对象(或者年龄达到阈值的对象)需要直接晋升(Promote)到老年代。 核心问题来了: 在执行 Minor GC 之前,JVM 无法准确知道这次 GC 会有多少对象存活。如果存活对象极多,直接塞给老年...