根据:
9 Garbage-First Garbage Collector
和:
G1: Java's Garbage First Garbage Collector
G1 针对具有大内存的多处理器机器。
那 2 篇论文(和其他网络论文)没有描述我们为什么需要: A。大记忆 b.多处理器(我认为这是由于并发和并行的需要)
这些要求的技术解释是什么?
最佳答案
情况正好相反。 G1 不针对大内存。如果您的应用程序需要较大的堆大小,G1 是有效的。
为什么您的应用程序需要大堆?这取决于业务要求和应用程序的特定需求。您可以加载大量主数据,或者您可以使用内存缓存来减少响应时间。想想处理 teta 字节数据并使用内存进行处理的大数据应用程序(Spark、Hadoop)。
多处理器机器具有更多的处理能力,可以有效地并行执行不同的任务。大型堆应用程序显然需要更多的处理能力。
通过设置最大停顿时间目标,G1GC 尝试实现该目标。与其他算法相比,默认情况下 G1GC 将 10% 的时间花在垃圾收集 Activity 上。您必须适本地微调参数以实现您的暂停时间目标。
这个相关问题有助于更深入地了解 G1GC:Java 7 (JDK 7) garbage collection and documentation on G1
关于java - 为什么 Garbage-First (G1) 针对具有大内存的多处理器机器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34696047/