gpt4 book ai didi

java - 长生命周期对象的大量收集与垃圾收集

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:23:40 28 4
gpt4 key购买 nike

在我的应用程序中,我收集了大量长期存在的对象。我正在使用 100gb(xmx 和 xms)的相对较大的堆大小,一旦我的应用程序使用了大约 30gb 的已用堆,垃圾收集器就会开始一个非常长的 stop-the-world 暂停,最多可能需要 15 分钟。一段时间后,应用程序终止并出现超出 gc 开销限制的异常。

我想在整个应用程序的生命周期内保留所有对象,因此释放任何内存不是一种选择。

我知道其中一种解决方案是使用堆外存储,但我现在想避免这种情况。

另一个是调整垃圾收集器的参数。我尝试了不同的算法和年轻一代的大小,但没有帮助,我不知道从那里去哪里。

最佳答案

我的问题在于 jvm 参数的错误顺序。我不知道您必须在 -jar 开关之前指定所有这些。

我最终正确地设置了更大的堆大小,并使用 G1GC 和相对较小的新生代(比率 20)。现在 GC 暂停更易于管理。

不过,在此用例中,从性能角度重写堆外存储代码可能更可取。

我删除了我的评论以避免潜在的混淆。

关于java - 长生命周期对象的大量收集与垃圾收集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48619435/

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