完整GC与G1 GC中的主要GC

时间:2019-10-12 08:56:43

标签: java performance garbage-collection g1gc

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

我碰到一篇文章,说完整的gc和主要的gc(旧的gen集合)是两回事,完整的gc是单线程的。我对此感到困惑。如果两者是两回事,那么完整的gc如何收集垃圾,即在G1 GC的完整gc期间执行哪些算法,哪个阶段或什么步骤。

1 个答案:

答案 0 :(得分:0)

对于G1,有一种方法可以区分这两者(这不适用于所有GC算法)。

G1使用堆区域(大小通常为1Mb)。这些内存区域被组合在一起,形成了年轻一代和老一代,成为独立的逻辑区域。对于旧的世代集合,G1将尝试通过简单地回收不再具有任何实时数据的区域(非常便宜)来回收足够的空间,或将实时数据从人口稀少的区域复制到空区域(从而最大化其中的实时数据)。地区)。

但是,如果G1无法以这种方式回收足够的空间,则它必须退回到完整的压缩集合中。

这将解释主要馆藏和完整GC之间的区别。