Wenn Sie Ihre eigene doppelt verkettete Liste erstellt haben und diese doppelt verkettete Liste Container (die Elemente aus Ihrer Liste enthalten) eingeben; Nur diese Container sind miteinander verbunden.
Also in Ihrer Liste haben Sie ein Objekt A in A 'enthalten. A 'ist mit B' verbunden und B 'ist ein Container, der B usw. enthält. Und keines der Objekte muss sich auf ein anderes beziehen.
Im Normalfall sind diese Container nicht von außen verfügbar (nur der Inhalt ist interessant); Daher enthält nur Ihre Liste Verweise auf Ihre Container (denken Sie daran, dass Ihr Inhalt den Container nicht kennt).
Wenn Sie Ihre letzte Referenz auf Ihre Liste entfernen (die Liste, nicht den Container oder den Inhalt), wird der GC versuchen, Ihre Listeninhalte zu sammeln, also Ihre Container und Ihre Inhalte.
Da Ihre Container nicht verfügbar sind außerhalb der einzigen Referenz, die sie haben, ist einander und die Hauptliste. All dies nennt man eine Insel der Isolation. Wenn sie in Ihrem Antrag noch Referenzen haben, werden sie den GC überleben, wenn nicht, werden sie es nicht tun.
Wenn Sie also nur Ihre Liste löschen, werden A 'und B' gelöscht, denn selbst wenn sie noch Referenzen haben, sind diese Referenzen Teil einer Insel. Wenn A und B keine Referenzen mehr haben, werden sie ebenfalls gelöscht.
mögliches Duplikat von [Wie behandelt Java Garbage Collector die Selbstreferenz?] (Http://stackoverflow.com/questions/407855/how-does-java-garbage-collector-handle-self-reference) –
siehe auch : [Zirkelreferenzen in Java] (http://stackoverflow.com/questions/176745/circular-references-in-java) –