Servus,
habe im Moment mit einigen ernsten Speicherproblemen zu kämpfen, und ich habe keine Ahnung, wie ich das vernünftig in den Griff kriegen soll.
Ein Beispiel:
Mein Programm bekommt 1024 MByte Speicher zugewiesen. Es lädt beim Start einige sehr große WAV-Dateien. Jetzt ist es aber so, daß das Programm es manchmal "schafft", und benötigt dann laut Taskmanager um die 960 MByte. Aber wenn ich es danach nochmal starte, kann es sein, daß es knapp 1200 MByte benötigt und sich dann mit einem OutOfMemory-Error verabschiedet, und das, obwohl es in beiden Fällen haargenau das gleiche macht.
Das ist schonmal das erste, und da sehe ich keine vernünftige Chance, das irgendwie zu beheben (wenn man mal davon absieht, daß man den zugewiesenen Speicher natürlich noch vergrößern könnte, logisch).
Das nächste ist, daß ich vor dem Einlesen einer Datei prüfen will, ob überhaupt noch Speicher zur Verfügung steht. Hier benutze ich Runtime.getRuntime().freeMemory(), aber die zeigt leider oft völlig unrealistische Werte an. Beispielsweise sagt sie, es sind noch 13 MByte frei, obwohl zu dem Zeitpunkt noch mehrere hundert hätten frei sein müssen.
Gibt es ein paar gute Strategien, um mit Speicherproblemen umgehen zu können? Gibt es todsichere Möglichkeiten, einen OutOfMemory-Error rechtzeitig und sicher zu verhindern?
Ich hoffe, ihr könnt mir helfen...
habe im Moment mit einigen ernsten Speicherproblemen zu kämpfen, und ich habe keine Ahnung, wie ich das vernünftig in den Griff kriegen soll.
Ein Beispiel:
Mein Programm bekommt 1024 MByte Speicher zugewiesen. Es lädt beim Start einige sehr große WAV-Dateien. Jetzt ist es aber so, daß das Programm es manchmal "schafft", und benötigt dann laut Taskmanager um die 960 MByte. Aber wenn ich es danach nochmal starte, kann es sein, daß es knapp 1200 MByte benötigt und sich dann mit einem OutOfMemory-Error verabschiedet, und das, obwohl es in beiden Fällen haargenau das gleiche macht.
Das ist schonmal das erste, und da sehe ich keine vernünftige Chance, das irgendwie zu beheben (wenn man mal davon absieht, daß man den zugewiesenen Speicher natürlich noch vergrößern könnte, logisch).
Das nächste ist, daß ich vor dem Einlesen einer Datei prüfen will, ob überhaupt noch Speicher zur Verfügung steht. Hier benutze ich Runtime.getRuntime().freeMemory(), aber die zeigt leider oft völlig unrealistische Werte an. Beispielsweise sagt sie, es sind noch 13 MByte frei, obwohl zu dem Zeitpunkt noch mehrere hundert hätten frei sein müssen.
Gibt es ein paar gute Strategien, um mit Speicherproblemen umgehen zu können? Gibt es todsichere Möglichkeiten, einen OutOfMemory-Error rechtzeitig und sicher zu verhindern?
Ich hoffe, ihr könnt mir helfen...