AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [Java] Arbeitet Garbage Collection rekursiv?
Thema durchsuchen
Ansicht
Themen-Optionen

[Java] Arbeitet Garbage Collection rekursiv?

Ein Thema von Chewie · begonnen am 11. Jan 2004 · letzter Beitrag vom 14. Jan 2004
Antwort Antwort
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#1

[Java] Arbeitet Garbage Collection rekursiv?

  Alt 11. Jan 2004, 18:58
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?
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#2

Re: [Java] Arbeitet Garbage Collection rekursiv?

  Alt 12. Jan 2004, 10:44
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...
gruß, choose
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: [Java] Arbeitet Garbage Collection rekursiv?

  Alt 12. Jan 2004, 14:25
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
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
choose

Registriert seit: 2. Nov 2003
Ort: Bei Kiel, SH
729 Beiträge
 
Delphi 2006 Architect
 
#4

Re: [Java] Arbeitet Garbage Collection rekursiv?

  Alt 12. Jan 2004, 14:30
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...
gruß, choose
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: [Java] Arbeitet Garbage Collection rekursiv?

  Alt 12. Jan 2004, 14:37
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.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
marvin.maybe

Registriert seit: 12. Jan 2004
17 Beiträge
 
#6

Re: [Java] Arbeitet Garbage Collection rekursiv?

  Alt 14. Jan 2004, 18:25
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 07: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