G1(垃圾收集器)何时开始运行,首先在哪个内存区域收集? java 8 上的新 GC 更新是什么?
最佳答案
when will be G1 ( Garbage Collector) starts running?
当您将 -XX:+UseG1GC
添加到 JVM 参数时,将启用 G1GC。
when will be G1 ( Garbage Collector) starts running and in which memory area it collect first?
引用oracle tutorial在 G1GC 上。
堆被划分为一组大小相等的堆区域,每个堆区域都是连续的虚拟内存范围。某些区域集被分配相同的角色(eden、survivor、old)
G1 执行并发全局标记阶段以确定整个堆中对象的 Activity 性。标记阶段完成后,G1 知道哪些区域大部分是空的。它首先在这些区域收集,这通常会产生大量的可用空间。这就是为什么这种垃圾收集方法被称为垃圾优先的原因。顾名思义,G1 将其收集和压缩 Activity 集中在堆中可能充满可回收对象(即垃圾)的区域。 G1使用暂停预测模型来满足用户定义的暂停时间目标,并根据指定的暂停时间目标选择要收集的区域数量。
G1 识别为适合回收的区域通过疏散进行垃圾收集。 G1 将对象从堆的一个或多个区域复制到堆上的单个区域,并在此过程中压缩并释放内存。此疏散在多处理器上并行执行,以减少暂停时间并提高吞吐量。因此,每次垃圾收集时,G1 都会在用户定义的暂停时间内持续工作以减少碎片。这超出了前面两种方法的能力。
关于java - G1(垃圾收集器)什么时候开始运行,它首先收集哪个内存区域? java 8 上有哪些新的 GC 更新?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46357476/