gpt4 book ai didi

java - 如何确定大型 Java 应用程序的 CMSInitiatingOccupancyFraction?

转载 作者:行者123 更新时间:2023-12-02 05:54:13 25 4
gpt4 key购买 nike

我们正在使用用 Java 编写的数据库 (Apache Geode)。我们的服务器有 64g RAM,因此我们将 Java 堆(Xms 和 Xmx)设置为大约 62g RAM。

对于此类情况,我见过的大多数 Java 建议是使用 CMS 垃圾收集器,并将 CMSInitiatingOccupancyFraction 设置为 68% 左右(稍微调整一下,但不要太多)。

但我的问题是:为什么我们不能将垃圾回收设置为从 95% 而不是 68% 开始?以这样的方式运行 Java 似乎很浪费,以至于您永远无法使用超过 68% 的堆而不导致不间断的垃圾收集。

这让我们很烦恼,因为我们正处于数据库不间断垃圾收集的阶段,而且当 JVM 实际上有大约 18 GB 空闲时,很难证明更多 RAM 是合理的。 :)

预先感谢您的任何建议。

最佳答案

我认为评论中的答案,加上我设法弄清楚的一些内容,几乎回答了我的问题。

问题之一似乎是碎片化。您可以释放 20% 的堆(80% 已使用),但您的堆可能会严重碎片化,很难找到操作所需的大的连续 block 。如果您较早开始运行 GC(例如 70%),则可以通过回收未使用的对象并为新对象创建更大的空洞来更好地控制碎片。

对于像 CMS 这样的非压缩 GC,无法 100% 保证您永远不会变得过于碎片化而无法分配内存块,但如果您尽早且频繁地进行收集,则可以尽可能减少这种情况发生。

关于java - 如何确定大型 Java 应用程序的 CMSInitiatingOccupancyFraction?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56027922/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com