Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Garbage Collector - Delphi Prism (https://www.delphipraxis.net/136145-garbage-collector-delphi-prism.html)

Highttower 24. Jun 2009 10:57


Garbage Collector - Delphi Prism
 
Hallo zusammen,
ich hab ein kleines Problem, mit Delphi und der Frage: Hat Delphi Prism einen Garbage Collector, bzw. haben alle DOT-Netframework sprachen einen, oder ist das C#, J# usw. vorbehalten?

Aus dem PrismWiki geht das nicht ganz hervor, hier werden nur Klassen instantisiert aber nirgends freigeben, es findet sich lediglich der Hinweis beim Using-Statement:

Zitat:

...
Die using-Anweisung stellt sicher, dass bei ihrer Beendigung alle von gr verwendeten Ressourcen freigegeben werden, auch wenn während der Ausführung des Blocks ein Fehler auftrat. Das ist wichtig, weil die Klasse Graphics unverwaltete Ressourcen verwendet, die nicht automatisch vom .NET-Framework freigegeben werden können.
...
Ich hab mal Google bemüht und bin dabei auf einen Blog gestoßen der sich mit Delphi (Prism) beschäftigt und der spannenden Frage

Zitat:

"Why doesn't Delphi have garbage collection?"
In den Kommentaren dazu findet man, dann den verweiß darauf das Delphi mit den Interfaces eine Art Garbage Collector besitzt, aber das ist auch nicht die Antwort auf meine Frage. -.-

Wie schon oft hier im Forum erwähnt, komm ich aus der C++ Ecke, da mach ich mir über sowas keine Gedanken, wenn ich da irgendwas mit "new" mallociere dann geb ich das mit "delete" nach Gebrauch auch wieder frei.

Wäre schön wenn mir jemand Licht in den dunkeln Tunnel bringen würde,

Tobi

EDIT:

Ein Test Programm mit
Delphi-Quellcode:
while true do
    k := new TKlasse1
wird nicht größer allerdings hab ich hier den Complier in verdacht, der mir das ganze einfach weg optimiert

Bernhard Geyer 24. Jun 2009 11:02

Re: Garbage Collector - Delphi Prism
 
Zitat:

Zitat von Highttower
ich hab ein kleines Problem, mit Delphi und der Frage: Hat Delphi Prism einen Garbage Collector, bzw. haben alle DOT-Netframework sprachen einen, oder ist das C#, J# usw. vorbehalten?

Der Garbage-Collector ist bestandteil von .NET und ist damit für alle für alle .NET-Sprachen gültig. Delphi.Prism braucht keinen eigenen Implementieren.

Jürgen Thomas 24. Jun 2009 11:11

Re: Garbage Collector - Delphi Prism
 
Ergänzung zu Bernhards Hinweis: Der GC arbeitet zur Laufzeit und hat schon deshalb nichts mit einer der Programmiersprachen zu tun. Nach dem Compilieren gibt es (eigentlich) keine Unterschiede mehr zwischen dem, was die eine oder die andere Programmiersprache erzeugt hat. Jürgen

Dust Signs 24. Jun 2009 11:36

Re: Garbage Collector - Delphi Prism
 
Dein sog. Testprogramm zeigt doch eigentlich nur, dass der GC funktioniert... du weist die neue Instanz immer derselben Variable zu, daher werden alle älteren Instanzen nicht mehr referenziert und können durch den GC zerstört werden.

Dust Signs

Highttower 24. Jun 2009 11:43

Re: Garbage Collector - Delphi Prism
 
Zitat:

Zitat von Dust Signs
Dein sog. Testprogramm zeigt doch eigentlich nur, dass der GC funktioniert... du weist die neue Instanz immer derselben Variable zu, daher werden alle älteren Instanzen nicht mehr referenziert und können durch den GC zerstört werden.

Dust Signs

Oder von der Compiler Engiene vorher erkannt werden und weg optimiert ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:59 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