Problem mit Garbage Collector

Serethos

Erfahrenes Mitglied
Hallo

Hab ein Programm geschrieben wo ich ein JFrame erzeuge und dann durch betätigen eines Button ein zweites JFrame erzeuge. Bei beenden des Zweiten JFrame hab ich die Anweisung JFrame.setDefaultCloseOperation(JFrame.Dispose_on_close) bei denn Befehl hab ich gedacht das Danach der Garbage Collector anfängt und längsam die Benutzten Deklarationen killt, weil ich die doch nicht mehr verwände. Hab ich da Irgendwie ein Denkfehler oder Schließ ich das 2. Frame nur mit ein fälschen befehl

Danke für Hilfe
 
Durch ein reines Schließen der JFrames räumt der Garbage Collector
dieses natürlich nicht auf.
Der Garbage Collector wird erst aktiv wenn kein Zeiger mehr auf das
JFrame zeigt.
Damit er dein JFrame aus dem Speicher löscht musst du das JFrame auf NULL
setzten.

myJFrame = NULL;

Ich weiß nicht ob du das wirklich beabsichtigst aber ich denke deine
Frage ist damit beantwortet.
 
Dein Problem könnte behoben sein, wenn Du stattdessen "EXIT_ON_CLOSE" für den Hauptframe festlegst und den zweiten JFrame als Kind des Ersten erzeugst.

CU schnuffie ;-)
 
Hallo!

Der Garabage Collector wird ein Objekt erst wegräumen, nachdem er keine Referenz mehr findet die auf dieses Objekt verweist. Auch wenn der JFrame (A) nicht mehr vom JFrame (B) referenziert wird kann er durchaus noch Referenzen auf andere Objekte halten und umgekehrt. Man denke hier etwa an EventListener etc.

Gruß Tom
 
Hallo,
ich habe ein ganz ähnliches Problem. Ich öffne und schließe einige Fenster in meinem Programm.
Ich schließe diese ganz normal mit dialog.dispose()
Soll das gesagte nun heissen, dass ich danach noch dialog = null schreiben muss?

Ich habe mein Programm mit einem Profiler analysiert. Dabei habe ich festgestellt, dass der Garbage Collector zwar die Objekte frisst, aber sich die Heapsize dabei nicht verkleinert. Schließlich stürzt das Programm nach einiger Zeit ab. Wie hängt die Anzahl der Objekte und die Heap Größe zusammen? Wieso frisst der GC Objekte aber der Speicher wird nicht frei?

Ich bin hier am verzweifeln und hoffe auf eure Hilfe!

SIMON
 
Zurück