AWT Frame beenden und aus dem Speicher löschen.
-
Hallo zusammen.
Ich habe da ein Problem mit der AWT.
Ich habe einige Frames erstellt die ich in meiner Application verwende.
Ich möchte gerne wissen ob die Frames die ich nicht mehr brauche aus dem speicher selbstständig entfernt werden oder nicht.Ich verwende die dispose() Methode um Frames zu schliessen.
Bye
-
Irgendwann wird der belegte Speicher sicher wieder vom garbage collector freigegeben. Das Problem dabei ist nur, dass man nicht weiss wann ... das ist IMHO so ziemlich das einzige was man bei der GC bemängeln kann.
-
Wenn du dispose() aufrufst, werden die Resourcen sofort freigegeben. Wenn du es nicht tust, wird dispose() aufgerufen, sobald der GC das Objekt frisst. Also mach dir nicht übermäßig viele Gedanken.
-
Hi,
solltest du nach
dispose();
noch das verlangen haben sofort den Speicher zu erleichtern kannst du noch
System.gc();
schreiben und der Garbage-Collector mäht alles was nicht mehr referenziert wird aus dem Speicher.
In diesem Sinne...
Bye
-
Stellt sich mir noch die Frage was setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
in diesem Zusammenhang bringen würde
-
GPC schrieb:
Hi,
solltest du nach
dispose();
noch das verlangen haben sofort den Speicher zu erleichtern kannst du noch
System.gc();
schreiben und der Garbage-Collector mäht alles was nicht mehr referenziert wird aus dem Speicher.
In diesem Sinne...
Bye
Wenn er dispose() schon aufruft, macht das wohl kaum noch Sinn, dann werden jediglich noch die managed Resourcen aufgeräumt, um die er sich aber sowieso nicht kümmern muss. Bzgl. seines Frames wird mit dispose() alles aufgeräumt, was der GC sonst erst viel später über finalize() machen würde. Das Frame-Objekt selber belegt nur Speicher im Heap und der wird schon von alleine gut verwaltet.
There is no better way to slow down your application than always calling the garbage collector.
-
Stellt sich mir noch die Frage was setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)
in diesem Zusammenhang bringen würdeWahrscheinlich nur, dass die VM beendet wird, was er ja nicht will.
Ich denke fast, dass ein DISPOSE_ON_CLOSE hier angebrachter ist - würde aber in jedem Fall dispose() explizit aufrufen.schreiben und der Garbage-Collector mäht alles was nicht mehr referenziert wird aus dem Speicher
Aber auch nur, wenn er das will - der GarbageCollector kann AFAIK ja nicht gezwungen werden zu laufen. Mann kann es lediglich 'vorschlagen'.
-
Hallo zusammen.
Erstmal danke für alle Infos.
Also mit dispose() war ich ja dann auf dem richtigen Weg.
Mein Hauptproblem ist es das ich nicht viel Speicherplatz zur Verfügung habe.
Ich schreibe eine Appliaction für den Casio DT-X10. Die VM ist die von CREME.Mir geht es natürlich hauptsächlich darum das die Ressourcen immer dann freigegeben werden wenn ich sie nicht mehr brauche.
Danke