答案是“这取决于情况”。对于大多数现代Java收集器,小型(年轻/伊甸园空间)收集确实是一种阻塞全局的收集。这不是小GC触发年轻空间填满的直接逻辑结果。(可以采用其他策略来触发小型GC或处理年轻空间填充)。相反,这只是大多数Java GC实现的方式。一个例外是ZGC,它不是分代的。因此,不存在小型收集的概念。相反,在触发GC时,会有一个短暂的(不到10ms)阻塞全局事件,同时找到GC根。第二个例外是Shenandoah GC,也同样不是分代的。(当然,最初的Java 1.1 GC是标记-清除收集器,非分代和阻塞全局。)
在阅读了几本书之后,我发现 Minor GC 总是一个“全局停顿”事件,它会停止所有应用线程,并且通常持续时间很短。相比之下,Full GC 的垃圾回收暂停时间要更长,因为它需要同时处理年轻代和老年代。所以无论是 Minor GC 还是 Full GC,都会导致全局停顿的事件发生。