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

标签 java garbage-collection heap-memory g1gc

根据:

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/

相关文章:

go - 在运行时转储 Go 进程的堆

c++ - C++ 中的堆错误

.net - 需要说明在执行方法时如何对对象进行垃圾回收

javascript - Node.js 和碎片化

Java replaceAll抛出空指针异常

java - MongoItemReader 中的限制和跳过选项

javascript - 清除 map 是否有助于垃圾收集?

c++ - 当相关的构造函数是私有(private)的时,如何在堆上返回一个类实例?

Java 使用 RegexOption.MULTILINE 分割字符串

java - 如何在java中迭代数组[...][i](列)