bischi
09-07-2006, 18:22
Hab gerade ein Problem, kenne die Ursache, aber nicht die Lösung:
Ich lade mittels der Image-Klasse mehrmals hintereinander ein Bild, welches eher gross ist und nachher skaliert wird. Es wird immer nur ein Bild gebraucht.
Nach ein paar Bildern kommt bei mir immer die Fehlermeldung:
Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space
Das ganze ist ansich nicht weiter schlimm (mit Ausnahme, dass danach jedes mal der garbage-collector das ganze Programm ausbremst). Wenn ich den garbage-collector vor dem Laden des neuen Bildes aufrufe, verschwindet der Fehler, das Programm wird allerdings unnötig langsam...
System.gc();
Nach dem Laden den gc aufzurufen funktioniert komischerweise nicht richtig.
Die Idee wäre jetzt, jeweils nur den Speicher vom Bild freizugeben, ein
Image.flush()
bringt allerdings nicht die erwünschte Lösung. Auch das Heraufsetzen des Heaps löst das Problem nicht.
Darum meine Frage: Kann ich in Java nur den Speicher eines Objektes freigeben?
MfG Bischi
Ich lade mittels der Image-Klasse mehrmals hintereinander ein Bild, welches eher gross ist und nachher skaliert wird. Es wird immer nur ein Bild gebraucht.
Nach ein paar Bildern kommt bei mir immer die Fehlermeldung:
Exception in thread "Image Fetcher 0" java.lang.OutOfMemoryError: Java heap space
Das ganze ist ansich nicht weiter schlimm (mit Ausnahme, dass danach jedes mal der garbage-collector das ganze Programm ausbremst). Wenn ich den garbage-collector vor dem Laden des neuen Bildes aufrufe, verschwindet der Fehler, das Programm wird allerdings unnötig langsam...
System.gc();
Nach dem Laden den gc aufzurufen funktioniert komischerweise nicht richtig.
Die Idee wäre jetzt, jeweils nur den Speicher vom Bild freizugeben, ein
Image.flush()
bringt allerdings nicht die erwünschte Lösung. Auch das Heraufsetzen des Heaps löst das Problem nicht.
Darum meine Frage: Kann ich in Java nur den Speicher eines Objektes freigeben?
MfG Bischi