根据:
和:
G1 针对具有大内存的多处理器机器。
那两篇论文(和其他网络论文)没有描述我们为什么需要:大记忆 B. 多处理器(我认为这是由于并发和并行的需要)
这些要求的技术解释是什么?
根据:
和:
G1 针对具有大内存的多处理器机器。
那两篇论文(和其他网络论文)没有描述我们为什么需要:大记忆 B. 多处理器(我认为这是由于并发和并行的需要)
这些要求的技术解释是什么?
这是另一种方式。G1 不是针对大内存的。如果您的应用程序需要较大的堆大小,则 G1 是有效的。
为什么您的应用程序需要大堆?这取决于业务需求和应用程序的特定需求。您可以加载大量的主数据,或者您可以使用内存缓存来减少响应时间。想想大数据应用程序(Spark、Hadoop),它们正在处理 teta 字节的数据并使用内存进行处理。
多处理器机器具有更强的处理能力,可以有效地并行执行不同的任务。大型堆应用程序显然需要更多的处理能力。
通过设置 Max pause time 目标,G1GC 尝试实现该目标。与其他算法相比,默认情况下 G1GC 将 10% 的时间用于垃圾收集活动。您必须正确微调参数以实现暂停时间目标。
这个相关问题有助于更深入地了解 G1GC: Java 7 (JDK 7) 垃圾收集和 G1 文档
G1 是热点 VM 中唯一可以有效处理超大堆的收集算法。但是,大堆不是必需的,而是 G1 是为您的应用程序需要非常大的堆的情况而构建的。在低堆情况下,它仍然优于旧算法。处理器的数量也是如此。