我刚刚开始学习G1 GC。这是我的另一个问题的延续:Full GC in G1 GC我看到一篇文章说 full gc 和 Major gc(老一代集合)是两个不同的东西,full gc 是单线程的。我对此感到困惑。如果两者是不同的事情,那么 full gc 如何收集垃圾,即 G1 GC 中的 full gc 期间执行哪些算法或阶段或步骤。
1 回答
皈依舞
TA贡献1851条经验 获得超3个赞
对于 G1,有一种方法可以区分这两者(这并不适用于所有 GC 算法)。
G1 使用堆区域(通常大小为 1Mb)。这些内存区域被组合在一起,形成年轻代和老一代作为单独的逻辑区域。对于老一代集合,G1 将尝试通过简单地回收不再有任何实时数据的区域(非常便宜)来回收足够的空间,或者将实时数据从人口稀疏的区域复制到空区域(从而最大化该区域中的实时数据量)地区)。
然而,如果 G1 不能以这种方式回收足够的空间,它必须回退到完全压缩集合。
这可以解释主要收集和完整GC之间的区别。
添加回答
举报
0/150
提交
取消