Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   [Java] Arbeitet Garbage Collection rekursiv? (https://www.delphipraxis.net/14569-%5Bjava%5D-arbeitet-garbage-collection-rekursiv.html)

Chewie 11. Jan 2004 17:58


[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?

choose 12. Jan 2004 09:44

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...

Chewie 12. Jan 2004 13:25

Re: [Java] Arbeitet Garbage Collection rekursiv?
 
Zitat:

Zitat von choose
Es bleibt die Frage, warum Du in Java eine verkettete Liste implementierst und Du Dich nicht auf das Collectionframework stützt.

Die beantwortet sich leicht: Es ist Teil einer Übung fürs Studium. Dort, wo sie seit diesem Semester, in dem ich anfing, dort zu studieren, nicht mehr Delphi, sondern Java lehren :mrgreen:

choose 12. Jan 2004 13:30

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:

Chewie 12. Jan 2004 13:37

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.

marvin.maybe 14. Jan 2004 17:25

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 21:06 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz