gpt4 book ai didi

超出 Java GC 开销限制 - 需要自定义解决方案

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:23:08 24 4
gpt4 key购买 nike

我正在用一个相当大的算法评估文本文件中的不同数据。

如果文本文件包含多个数据点(我需要的最少数据点是某物,例如 130 万个数据点),则会出现以下错误:

Exception in thread "main" java.lang.OutOfMemoryError: GC overhead limit exceeded
at java.util.regex.Matcher.<init>(Unknown Source)
at java.util.regex.Pattern.matcher(Unknown Source)
at java.lang.String.replaceAll(Unknown Source)
at java.util.Scanner.processFloatToken(Unknown Source)
at java.util.Scanner.nextDouble(Unknown Source)

当我在 Eclipse 中使用已安装的 jre6(标准 VM)的以下设置运行它时:

-Xms20m -Xmx1024m -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -XX:NewSize=10m 
-XX:MaxNewSize=10m -XX:SurvivorRatio=6 -XX:TargetSurvivorRatio=80
-XX:+CMSClassUnloadingEnabled

请注意,如果我只运行文本文件的一部分,它工作正常。

现在我已经阅读了很多关于这个主题的文章,看来我一定是在某个地方发生了数据泄漏,或者我在数组中存储了太多数据(我想我确实如此)。

现在我的问题是:我该如何解决这个问题?是否可以更改我的设置,以便我仍然可以执行计算,或者我真的需要更多的计算能力吗?

最佳答案

真正关键的 vm arg 是 -Xmx1024m,它告诉 VM 使用最多 1024 兆字节的内存。最简单的解决方案是在那里使用更大的数字。您可以尝试 -Xmx2048m-Xmx4096m,或者任何数字,前提是您的机器有足够的 RAM 来处理它。

我不确定您是否从任何其他 VM args 中获得了很多好处。大多数情况下,如果您告诉 Java 要使用多少空间,它会很聪明地处理其余的参数。我建议删除除 -Xmx 参数之外的所有内容,然后查看其执行情况。

更好的解决方案是尝试改进您的算法,但我还没有足够详细地阅读它以提供任何建议。

关于超出 Java GC 开销限制 - 需要自定义解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16865073/

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