![]() |
Garbage Collection
Hallo;
da ich auf diesem Gebiet noch überhaupt nichts gemacht habe, habe ich mir gerade ein .net-FAQ durchgelesen und da stellt sich mir eine Frage: Ist Garbage Collection nicht langsam und unsauber? In Basic wird es ja so ähnlich gemacht...und es ist grauenvoll :stupid: |
Re: Garbage Collection
Jein.
Und (unkompiliertes) Basic hat auch noch andere Performance-Bremsen. Auch kannst Du die ersten Implementierungen von Java in diesem Bereich auch nicht mit den aktuellen Versionen in .NET und Java vergleichen. Die Fehler von damals sind heute nicht mehr vorhanden bzw. stellen nur in besonderen Situationen ein Problem dar. Dazu wurden schon sehr viel Mannjahr Entwicklung hineingesteckt, das im "Normfall" GC kein Problem darstellt. Und wieso sollte GC unsauber sein bzw. was stellst Du dir darunter vor? |
Re: Garbage Collection
![]() ich stelle mir darunter einen hintergrundtask vor, der ständig den speicher aufräumt... :gruebel: ist das falsch so? |
Re: Garbage Collection
Eigentlich nicht. Der GC läuft AFAIK als eigener Thread mit.
Und ja nach größe des freizugebenden Speichers gibt es 3 Prioritäten. Alle paar µs werden kleine Speicherbereiche aufgeräumt, alle paar ms mittlere und die großen werden alle paar Sekunden betrachtet und evtl. freigegeben. Falls du ein Mehrprozessorsystem hast, kann dieser GC auf dem 2ten Prozessor laufen und damit einige Probleme bei ausgelasteten Systemen aus dem Weg gehen. |
Re: Garbage Collection
IMHO ist der GC von .net so entwickelt, dass er bei beschäftigten Prozessor nur dann in Aktion tritt, wenn die Freigabe erforderlich ist, also, wenn der Speicher bald voll ist. Ansonsten wartet er einfach ab, bis man ihn arbeiten läßt!
|
Re: Garbage Collection
Zitat:
Im Gegenteil, der Garbage Collector sorgt ja gerade dafür, dass alles wieder glänzend wird, indem er auch die Speicherleichen einsammelt, die du in einem herkömmlichen Programm vielleicht übersehen hättest... Der .net-GC gehört zu den moderneren, er verwendet kein einfaches mark-and-sweep, sondern ein Generations-basiertes Modell. Mehr dazu unter ![]() ![]() Arbeite einfach mal mit einer Garbage-Collector-Sprache, also zum Beispiel mit .net. Du wirst sehen, dass es sich angenehmer programmiert und in den meisten Fällen von mangelnder Performance nichts zu sehen ist. Im Gegenteil, teilweise geht's sogar schneller, weil der Garbage Collector zum Beispiel Speicher wiederverwenden kann und generell mehr weiß als der Programmierer ;c) |
Re: Garbage Collection
Danke!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:16 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