In Java kümmert sich der Garbage Collector um die Reinigung der Objekte, die keinen Bezug haben. Ich habe mich gefragt, ob der Kopf einer einfach verknüpften Liste auf null gesetzt ist, es wird kein Verweis auf den nächsten Listenknoten geben und der Garbage Collector sollte ihn zur Reinigung markieren und wir müssen nicht die gesamte Liste durchlaufen und die Knoten einzeln löschen ?Wird die Verknüpfungsliste gelöscht, wenn head in Java auf null gesetzt ist?
Antwort
Müllsammlungsüberprüfungen für lebendig Objekte.
Während einige Ihrer Objekte einen Verweis auf diese Liste enthalten, ist die Liste (und alle ihre Mitglieder) aktiv.
Wenn dieser Verweis auf die Liste nicht mehr existiert; zum Beispiel indem man es auf null setzt; Ihr Listenobjekt ist nicht mehr am Leben. So wird es der Müllsammlung unterworfen. Für die Objekte innerhalb Ihrer Liste gelten die gleichen Dinge. Also - wenn diese Liste der einzige Ort war, der einen Verweis auf das Element enthielt, dann ist das Element nicht mehr am Leben, nachdem die Liste "ungültig gemacht" wurde. Dann kann das Listenelement auch gesammelt werden. Wenn es jedoch ein anderes lebendiges Objekt gibt, das auf das Listenelement verweist ... bleibt das Listenelement; obwohl die Liste selbst gesammelt wird.
Mit anderen Worten: Sie sollten versuchen, wie der Müllsammler zu denken: zu verstehen, welche Objekte lebendig sind; und alles andere hört auf, wichtig zu sein.
Ja. Selbst wenn es sich um eine zirkuläre Liste handelt, wird die Datenmüllsammlung automatisch durchgeführt, solange es keine Live-Referenzen zu einem Listenelement von einer beliebigen Stelle außerhalb der Liste gibt. Weitere Informationen dazu finden Sie unter here.
- 1. Java: Was passiert, wenn eine Runnable, die in einem Thread verwendet wird, auf null gesetzt wird?
- 2. Java - Warum wird meine statische Variable auf null gesetzt?
- 3. Wie funktioniert AJAX, wenn XMLHttpRequestObject gelöscht wird und/oder keinen Wert enthält, da es auch auf null gesetzt ist?
- 4. Hibernate gesetzt Fremdschlüssel auf null, wenn löschentität
- 5. PL/SQL-Block in Triggern wird auf null gesetzt
- 6. Wie wird der Wert auf Null gesetzt, wenn Arraylist erschöpft ist?
- 7. Wird UIButton deaktiviert, wenn sein Alpha auf 0.0 gesetzt ist?
- 8. synchronisierten Objekt auf null gesetzt
- 9. Ausdehnung auf Null gesetzt, wenn Sie auf den Hintergrund klicken
- 10. C# 6 Null-Propagierung Welcher Wert wird gesetzt, wenn das Objekt null ist
- 11. Nullable aktivieren Boolean: Groß-/Kleinschreibung wird auf Null gesetzt, wenn der Wert true ist
- 12. ist wirklich Bildansicht gesetzt null?
- 13. Tastypie Fremdschlüssel auf Null gesetzt
- 14. Was bewirkt die Verwendung der clearInterval-Methode, wenn eine Intervallvariablen auf null gesetzt wird?
- 15. Progaurd wird nicht verkleinert, wenn debuggable auf true gesetzt ist
- 16. Wie Enum auf null gesetzt
- 17. ViewDidAppear wird nicht aufgerufen, wenn die modale Ansicht gelöscht wird
- 18. Setzen Sie die Bindung mit der ReactiveUI Bind-Methode auf null, wenn ViewModel auf null gesetzt ist
- 19. Ant wenn: wahr. Wenn die Eigenschaft auf "true" gesetzt wird, wird die Aufgabe nicht ausgeführt.
- 20. ARC - Werden Gestenerkenner und KVOs behandelt, wenn UIViewController auf Null gesetzt ist?
- 21. Warum wird mein Cookie nicht gelöscht/nicht gesetzt?
- 22. Ist null in Java
- 23. Makefile gesetzt, wenn die Variable leer ist
- 24. Flash AS3 - Objekt wird nicht auf Null gesetzt
- 25. Datengrid wird nicht aktualisiert, nachdem Elementquelle auf Null gesetzt wurde
- 26. Spiele löschen, wenn Benutzer gelöscht wird
- 27. Die Seite `_IsValid ist auf 'true' gesetzt, wenn 'OnClientClick' gesetzt ist
- 28. Wird die Grails-Kaskade gelöscht, wenn domain.delete() nicht verwendet wird?
- 29. Wert wird gesetzt, obwohl before_save es auf Null setzt
- 30. Warum wird der Druckkreis standardmäßig auf Null gesetzt?
Sie könnten leicht feststellen, dass mit einem Experiment, füllen Sie eine Liste mit großen Byte-Array, dann den Kopf Null und dies wiederholt tun. Wenn es funktioniert, werden Sie nicht aus dem Speicher gehen. – the8472