Hallo,
ich hadere gerade mit einem Programm...
Mein Programm erstellt Vergleiche. Hierzu werden 3 Listen erstellt, 2 führen eine ID eine führ einen Gewichtswert.
Diese Listen haben jeweils eine Größe von fast 14 Millionen einträgen.
An einer Stelle möchte ich nun die IDs zu einer Liste verknüpfen. Dies sieht wie folgend aus:
Daraufhin gibt es folgenden Fehler:
Nun, ich habe bereits folgende Parameter angegeben:
-Xms512m -Xmx1024m
Die Listeneinträge lassen sich ebenfalls nicht reduzieren. Würde es etwas bringen die VM Parameter zu erhöhen? Woher weis ich was die maximal möglichen Werte für die VM sind? Und generell - wieso ist das zusammenfügen zweier Listen so problematisch. Wie gesagt, die Liste wird nicht verdoppelt sondern nur die Stringinhalte in einen String umgewandelt!
Also falls wer Tricks kennt um mit diesen Memory Problemen umzugehen nur zu
... Leider ist das ganze schwer zu Testen da ein Durchlauf 1 Stunde dauert (zumindest auf so vielen Vergleichen).
ich hadere gerade mit einem Programm...
Mein Programm erstellt Vergleiche. Hierzu werden 3 Listen erstellt, 2 führen eine ID eine führ einen Gewichtswert.
Diese Listen haben jeweils eine Größe von fast 14 Millionen einträgen.
An einer Stelle möchte ich nun die IDs zu einer Liste verknüpfen. Dies sieht wie folgend aus:
Java:
keys.add(id1List.get(i)+sep+id2List.get(i));
Code:
Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOfRange(Unknown Source)
at java.lang.String.<init>(Unknown Source)
at java.lang.StringBuilder.toString(Unknown Source)
-Xms512m -Xmx1024m
Die Listeneinträge lassen sich ebenfalls nicht reduzieren. Würde es etwas bringen die VM Parameter zu erhöhen? Woher weis ich was die maximal möglichen Werte für die VM sind? Und generell - wieso ist das zusammenfügen zweier Listen so problematisch. Wie gesagt, die Liste wird nicht verdoppelt sondern nur die Stringinhalte in einen String umgewandelt!
Also falls wer Tricks kennt um mit diesen Memory Problemen umzugehen nur zu