java - G1(垃圾收集器)什么时候开始运行,它首先收集哪个内存区域? java 8 上有哪些新的 GC 更新?

标签 java java-8 garbage-collection garbage g1gc

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/

相关文章:

java - 解析大于 hdfs block 大小的 XmlInputFormat 元素

java - 直接访问对象 = 比从文件读取快 94,117 倍?

Java 8 矩阵 * vector 乘法

java - 需要额外过滤时重用流 - Java

android - 算术评估器中的垃圾收集过多

java - 对接口(interface)而不是实现进行编程 : Why is assigning the concrete implementation of an object at runtime even better?

java - 在 java 中运行 d3 javascript

java - 必须使用 Java 8 处理具有实体集的对象吗?

java - 运行时 gc 实际上做了什么以及导致此输出的原因是什么?

java - JVM 和内存使用 - JRun 服务器未使用完整的 PSPermGen 分配?