かなり大きなアルゴリズムで、テキストファイルからのさまざまなデータを評価しています。
テキストファイルに複数のデータポイントが含まれている場合 (必要な最小値は 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)
インストールされたjre6(標準VM)の次の設定でEclipseで実行しているとき:
-Xms20m -Xmx1024m -XX:MinHeapFreeRatio=20 -XX:MaxHeapFreeRatio=40 -XX:NewSize=10m
-XX:MaxNewSize=10m -XX:SurvivorRatio=6 -XX:TargetSurvivorRatio=80
-XX:+CMSClassUnloadingEnabled
テキストファイルの一部だけを実行すると、正常に機能することに注意してください。
今、私はこの主題について多くのことを読んできましたが、どこかでデータリークが発生したか、配列にデータを保存しすぎているようです (私はそうしていると思います)。
今私の問題は次のとおりです。これを回避するにはどうすればよいですか? 計算を実行できるように設定を変更することは可能ですか?それとも、より多くの計算能力が本当に必要ですか?