您好,我有一个使用内存数据网格的 150GB 堆内存程序的案例。我有一些来自运营部门的疯狂要求,要使用一台机器。现在我们都知道如果并行垃圾收集器使用超过 150GB 会发生什么,如果调用 FULL GC 可能会进行数十分钟的垃圾收集。
我希望随着 Java 9 的到来,Shenandoah 低暂停 GC。不幸的是,据我所见,它没有在 Java 9 中列出交付。有人知道吗?
尽管如此,我想知道 G1 GC 将如何处理这么多的堆内存。
最后一个问题。由于我有应该在 2 小时内完成的非交互式批处理应用程序,可以说。这里的主要目标是确保 Full GC 永远不会启动。如果我确保有足够的内存,可以说可以达到的最大堆是否为 150,并且我为其分配了 250GB,我可以满怀信心地说 Full GC GC 永远不会介入或 ? 通常如果新生代+老年代触及最大堆,就会触发full GC。它可以以不同的方式触发吗?
提出了一个重复的请求,我将在这里尝试解释为什么这个问题不是重复的。首先,我们谈论的是 150GB 堆,它为问题增加了完全不同的维度。其次,我没有像提到的问题那样使用 RMI,第三,我在两行之间询问有关 G1 垃圾收集器的问题。此外,一旦我们超出 32GB 堆障碍,我们将进入 64 位地址空间,您无法说服我关于 <32GB 堆的问题与堆 >32GB 的问题相同 更不用说自从 Java 7 例如 PermSpace 不存在以来事情已经发生了一些变化。