为什么 Garbage-First (G1) 针对具有大内存的多处理器机器

Why Garbage-First (G1) targeted for multiprocessor machines with large memories

根据:

9 Garbage-First Garbage Collector

和:

G1: Java's Garbage First Garbage Collector

G1 针对具有大内存的多处理器机器。

那 2 篇论文(和其他网络论文)没有说明我们为什么需要: 一种。大回忆 b.多处理器(我认为这是由于并发和并行的需要)

这些要求的技术解释是什么?

G1 是热点 VM 中唯一可以有效处理超大堆的收集算法。然而,大堆不是必需的,而是 G1 是为您的应用程序需要非常大的堆的情况而构建的。在 low-heap 情况下,它仍然优于旧算法。处理器数量也是如此。

情况正好相反。 G1 不针对大内存。如果您的应用程序需要较大的堆大小,G1 是有效的。

为什么您的应用程序需要大堆?这取决于业务要求和应用程序的特定需求。您可以加载大量主数据,或者您可以使用内存缓存来减少响应时间。想想处理 teta 字节数据并使用内存进行处理的大数据应用程序(Spark、Hadoop)。

多处理器机器具有更多的处理能力,可以有效地并行执行不同的任务。大型堆应用程序显然需要更多的处理能力。

通过设置最大停顿时间目标,G1GC 尝试实现该目标。与其他算法相比,默认情况下 G1GC 将 10% 的时间花在垃圾收集活动上。您必须适当地微调参数以实现暂停时间目标。

这个相关问题有助于更深入地了解 G1GC:Java 7 (JDK 7) garbage collection and documentation on G1