猿问

G1 GC 中的 Full GC 与 Major GC

我刚刚开始学习G1 GC。这是我的另一个问题的延续:Full GC in G1 GC

我看到一篇文章说 full gc 和 Major gc(老一代集合)是两个不同的东西,full gc 是单线程的。我对此感到困惑。如果两者是不同的事情,那么 full gc 如何收集垃圾,即 G1 GC 中的 full gc 期间执行哪些算法或阶段或步骤。


慕勒3428872
浏览 92回答 1
1回答

皈依舞

对于 G1,有一种方法可以区分这两者(这并不适用于所有 GC 算法)。G1 使用堆区域(通常大小为 1Mb)。这些内存区域被组合在一起,形成年轻代和老一代作为单独的逻辑区域。对于老一代集合,G1 将尝试通过简单地回收不再有任何实时数据的区域(非常便宜)来回收足够的空间,或者将实时数据从人口稀疏的区域复制到空区域(从而最大化该区域中的实时数据量)地区)。然而,如果 G1 不能以这种方式回收足够的空间,它必须回退到完全压缩集合。这可以解释主要收集和完整GC之间的区别。
随时随地看视频慕课网APP

相关分类

Java
我要回答