Frage zum Garbage Collector

kossy

Bekanntes Mitglied
Hallo zusammen !

Ich habe mal eine direkte Frage zu dem Garbage Collector in Java. Wann genau wird dieser in Java aufgerufen. Nur dann wenn ein mittels Referenzvariable nicht mehr auf ein bestimmtes Objekt gezeigt wird (es also nicht mehr referenziert wird), oder auch dann, wenn zu einem bestimmten Objekt gar keine Referenzvariablen im Programmcode vorhanden sind?

Grüße
Kossy
 
Der Garbage Collector läuft in undefinierbaren Abständen immer mal und räumt dann alle Objekte weg, zu denen es keine Referenz mehr gibt.
 
Und hier ist die Frage, ob der GB nur dann aufgerufen wird, wenn NUR ein beliebiges Objekt nicht mehr zu angesprochen wird:


Java:
objektA = new ObjektA();

oder auch so:

Java:
ObjektA objektA;
Button b;

//weiterer Java Code

b.addActionListener(new ObjektA());

oder so:


Java:
Button b;

//weiterer Java Code

b.addActionListener(new ObjektA());
 
Der Garbage Collector arbeitet selbständig und guckt in "zufälligen" Abständen von sich aus nach Objecten die gelöscht werden können. Er wird nicht getriggert. (Ausser durch System.gc() oder wenn der Ram volläuft)
 
Der Garbage Collector wird nicht explizit aufgerufen wenn ein Objekt seine Referenzen verliert, der läuft einfach irgendwann los wenn Java der Meinung ist dass es mal wieder Zeit wird.

In deinem Beispiel würde nichts aufgeräumt werden, weil die ActionListener in der addActionListener in eine Liste gelegt werden.
 

Zurück
Oben