我刚刚开始学习G1 GC。这是我的另一个问题的继续:Full GC in G1 GC
我看到一篇文章说完整的gc和主要的gc (旧的gen集合)是两个不同的东西,完整的gc是单线程的。我对此感到困惑。如果两者是两个不同的东西,那么full GC如何收集垃圾,即在G1 gc中的full gc期间执行哪些算法或阶段或步骤。
发布于 2019-10-13 16:18:46
对于G1,有一种方法可以区分这两种算法(这并不适用于所有GC算法)。
G1使用堆的区域(通常大小为1Mb )。这些记忆区域被组合在一起,形成年轻一代和年老一代作为单独的逻辑区域。对于旧的gen集合,G1将尝试通过简单地回收不再有任何实时数据的区域(非常便宜)来回收足够的空间,或者将实时数据从稀疏填充的区域复制到空区域(从而最大化该区域中有多少实时数据)。
但是,如果G1不能以这种方式回收足够的空间,它必须退回到完全压缩的集合。
这将解释主要收集和完整GC之间的区别。
https://stackoverflow.com/questions/58352483
复制相似问题