2

根据:

9 垃圾优先垃圾收集器

和:

G1:Java 的垃圾优先垃圾收集器

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

那两篇论文(和其他网络论文)没有描述我们为什么需要:大记忆 B. 多处理器(我认为这是由于并发和并行的需要)

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

4

2 回答 2

2

这是另一种方式。G1 不是针对大内存的。如果您的应用程序需要较大的堆大小,则 G1 是有效的。

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

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

通过设置 Max pause time 目标,G1GC 尝试实现该目标。与其他算法相比,默认情况下 G1GC 将 10% 的时间用于垃圾收集活动。您必须正确微调参数以实现暂停时间目标。

这个相关问题有助于更深入地了解 G1GC: Java 7 (JDK 7) 垃圾收集和 G1 文档

于 2016-01-09T22:54:29.497 回答
-1

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

于 2016-01-09T19:29:16.713 回答