![]() |
[Java] Arbeitet Garbage Collection rekursiv?
Bei der Implementierung einer verketteten Liste stellte sich die oben genannte Frage. Konkret: Wenn ich die gesamte Liste löschen will, reicht es da, das erste Element auf null zeigen zu lassen? Also mit anderen Worten: Die Garbage Collection löscht dann das erste Element. In diesem Moment gibt es aber auch keine Referenz mehr auf das zweite, da das Objekt, das diese beinhaltet hatte, ja zerstört wurde. Und so weiter und so fort.
Ist das richtig, ist die Garbage Collection so intelligent oder muss ich die Elemente selber auf null setzen? |
Re: [Java] Arbeitet Garbage Collection rekursiv?
Hallo Chewie,
es reicht vollkommen aus, die Referenz auf das erste Element der Struktur aus Sicht des Klients (Deinem Programm) zu "verlieren". Sind die anderen Elemente somit nicht mehr (in)direkt über andere Referenzen verbunden, wird die gesamte Struktur durch den GC freigegeben. Achtung: Solltest Du an einer Stelle Singeltons verwenden, die auf Deine Struktur verweisen, können nach wie vor Phänomene entstehen, die einem Memory-Leak gleichkommen, weil das Singelton vom Klienten erreicht werden kann und dieses wiederum Zugriff ein Element der Struktur hat, das letztlich indirekt die anderen Elemente referenziert. Es bleibt die Frage, warum Du in Java eine verkettete Liste implementierst und Du Dich nicht auf das Collectionframework stützt. Die Implementierung java.util.LinkedList ist nicht nur als verkettete Liste realisiert sondern implementiert außerdem die Interfaces java.util.Collection und java.util.List, so dass der Zugriff vollkommon transparent über das Java-Collection-Framework abgewickelt werden kann... |
Re: [Java] Arbeitet Garbage Collection rekursiv?
Zitat:
|
Re: [Java] Arbeitet Garbage Collection rekursiv?
Hmm... Das scheint mir etwas paradox: Ihr lernt Java ohne die Vorteile des vorhandenen Klassenframeworks zu nutzen? Stattdessen schreibt ihr Code, in einer Form, die so in Java später nicht verwendet werden wird/sollte, um klassische Strukturen kennzulernen, bei denen Probleme auftreten, die ihr wg des GC nicht berühren werdet... :gruebel:
|
Re: [Java] Arbeitet Garbage Collection rekursiv?
Das mag wohl so stimmen. Aber schließlich lernen wir ja nicht das Programmieren in Java als Primärziel, sondern das Programmieren selbst (mit Java als Beispiel). Und eine verkettete Liste funktioniert in allen Hochsprachen vom Prinzip her gleich, die Frameworks sind aber meistens unterschiedlich.
|
Re: [Java] Arbeitet Garbage Collection rekursiv?
Hallo,
über Weihnachten habe ich einer Freundin bei ihren Java-Programmierübungen geholfen. Die Aufgabenstellungen sahen ganz ähnlich aus wie zu meiner Studienzeit: ADTs, wie "verkette Listen". Nur hat es damals bei mir in Modula-II noch Sinn gemacht. ADTs wie Listen sind in Java natürlich überflüssig. Allerdings ist es vielleicht nicht schlecht, damit man den nächsten ADT "Bäume" versteht... Gruß, Marvin. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz