gpt4 book ai didi

java - Java 垃圾收集器导致性能低下?需要建议

转载 作者:搜寻专家 更新时间:2023-10-31 20:00:37 24 4
gpt4 key购买 nike

我将尝试简要解释这个问题。我在供应链领域工作,我们处理元素/产品和 SKU。

比如说,我的整个问题集是 100 万个 SKU,我正在运行一个算法。现在,我的 JVM 堆大小为 4 GB。

我无法一次性处理所有 SKU,因为我需要更多内存。因此,我将问题集分成更小的批处理。每个批处理都会有所有需要一起处理的相关SKU。

现在,我运行几次迭代来处理整个数据集。说,如果每批持有约。 5000 个 SKU,我将进行 200 次迭代/循环。在批处理完成之前,需要 5000 个 SKU 的所有数据。但是当下一个批处理开始时,不需要前一个批处理的数据,因此可以进行垃圾收集。

这是问题背景。现在,由于 GC 导致的特定性能问题 -每批大约需要 2-3 秒才能完成。现在,在这段时间内,GC 无法释放任何对象,因为在处理特定批处理结束之前需要所有数据。因此,GC 正在将所有这些对象移动到旧的 Gen(如果我查看 yourkit 分析器,有新一代几乎没有任何东西)。所以,老一代增长得更快,需要完整的 GC,这让我的程序非常慢。在这种情况下有什么方法可以调整 GC,或者可以更改我的代码以不同的方式进行内存分配?

PS - 如果每批都非常小,我看不到这个问题。我相信这是因为 GC 能够在批处理完成得更快时足够快地释放对象,因此不需要移动旧代中的对象。

最佳答案

First Google hit表示您可以使用 -XX:NewRatio 设置相对于老年代更大的新生代大小。

关于java - Java 垃圾收集器导致性能低下?需要建议,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37316775/

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