Frage zum garbage collector

jeipack

Erfahrenes Mitglied
HI
Wenn ich zwei Objekte habe die auf das jeweils andere zeigt, diese Objekte aber sonst nicht mehr referenziert sind (sprich, sie sind aus dem Code nicht mehr erreichbar). Werden diese vom garbage collector gelöscht oder liegen die dann für immer tod im Speicher rum?

Gruss
jeipack
 
Soweit ich das gehört habe erkennt der Garbage Collector solche Konstellationen, kann ich aber nicht 100% sagen.
 
Wenn beide Objekte nicht mehr referenziert sind JA.

Dies kannst du durch Heap dump erzeugen und manuelles GC ausführen (oder lange genug warten^^)(von der JConsole z.B.) herausfinden.

Wenn du genaueres wissen willst brauchen wir schon ein Beispiel ;-)
 
Ein Beispiel? ja ok ich versuchs ein mal:
Java:
class Workingclass {
public Workingclass() {

Yin yin = new Yin();
Yang yang = new Yang();

yin.setYang(yang);
yang.setYin(yin);

yin=null;
yang=null;
//yin und yang sind nun nicht mehr referenziert
//besitzen allerdings untereinander noch eine Referenz.
//werden diese Objekte nun gelöscht oder nicht?
}

public static void main(String[] args) {
new Workingclass();
}
}

class Yin {
Yang yang;

public Yin() {
}

void setYang(Yang y) {
yang=y;
}
}

class Yang {
Yin yin;

public Yang() {
}

void setYing(Yin y) {
yin =y;
}
}
//(gefundene Fehler darf man behalten ;))

Das ist etwa das was ich meine. Eine Stufe weiter wäre noch wenn Yin/Yang noch eine Refferenz zum Workingclass-Objekt bekommen würden, würde das einen Unterschied machen? Eigentlich nicht oder?


Gruss
 

Neue Beiträge

Zurück