OutOfMemory - mehr Speicher

thomy800

Erfahrenes Mitglied
Hallo,

Ich habe ein kleines Programm geschrieben, was sehr viel Speicher benötigt (ob es jetzt die beste Variante ist, wie ich das Programm umgesetzt habe, sei mal dahin gestellt). Jedenfalls würde mich mal interessieren, ob es möglich ist, mehr Speicher als normal zu reservieren oder irgendwie auszulagern, damit ich den Fehler "OutOfMemoryError" verhindern kann. Das Problem dabei ist, dass das Programmchen rekursiv arbeitet. Hat da jemand eine Idee?

MfG thomy800
 
Du solltest wirklich mal genau schauen wo dein Programm so viel Speicher benötigt. Einfach den Speicher erhöhen ist keine Lösung, denn sobald die Rekursion doch noch mal tiefer wird, wird ja auch wieder mehr Speicher verbraucht. Speicherlecks in Rekursionen sind ja normalerweise nicht endlich und können somit auch nicht durch eine feste Reservierung von Speicher ausgeglichen werden.
 
Ja, das stimmt schon. Ich habe es allerdings so organisiert, dass das Programm nur bis zu einer bestimmten Anzahl sich rekursiv aufruft und somit kann ich es steuern und kurz vor dem OutOfMemory abbrechen. Allerdings reicht das Resultat nicht, ich bräuchte sozusagen noch eine Rekursionstiefe mehr...
Könnte man nicht vielleicht den benötigten Speicher vorher schätzen und reservieren, oder wenn es knapp wird, erweitern?
 
Mit -Xmx gibst du den maximalen Heap-Speicher an. Also der Speicher der von deinen Instanzen belegt wird.
Z.b.: -Xmx 250M

Mit -Xms gibst du den minimalen heap size an.

Wobei zeja Recht hat. Prinzipiell sollte man vorher sich erstmal fragen, ob man mehr Speicher braucht.
 
Also, ich rufe Java so auf:
Code:
java -Xms 250M -jar ...
und bekomme immer (egal welchen Wert ich einsetze) den Fehler:
Code:
Invalid initial heap size: -Xms
Could not create  the Java virtual machine.

Was mache ich falsch?
 
Vielen Dank, es funktioniert :)

PS: Kann mir jemand ne Seite nennen, wo man diese Befehle von Java alle findet?
 
Zuletzt bearbeitet:
Zurück