我正在以相当大的算法评估来自文本文件的不同数据。
如果文本文件包含多个数据点(我需要的最小值是 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
请注意,如果我只运行部分文本文件,它就可以正常工作。
现在我已经阅读了很多关于这个主题的内容,似乎在某个地方我必须有数据泄漏或者我在数组中存储了太多数据(我想我这样做了)。
现在我的问题是:我该如何解决这个问题?是否可以更改我的设置以便我仍然可以执行计算,还是我真的需要更多的计算能力?