Was ist Garbage Collection?
Die Garbage Collection (GC) ist ein dynamischer Ansatz für die automatische Speicherverwaltung und Heap-Zuweisung, der tote Speicherblöcke verarbeitet und identifiziert und Speicher zur Wiederverwendung neu zuordnet. Der Hauptzweck der Speicherbereinigung besteht darin, Speicherlecks zu reduzieren.
GC-Implementierung erfordert drei primäre Ansätze wie folgt:
Mark-and-Sweep – Wenn der Speicher zu Ende ist, sucht der GC den gesamten verfügbaren Speicher und lädt dann den verfügbaren Speicher zurück.
Referenzzählung – Zugewiesene Objekte enthalten eine Referenzzählung der Referenznummer. Wenn die Speicherzählung Null ist, ist das Objekt Müll und wird dann zerstört. Der freigegebene Speicher kehrt zum Speicher-Heap zurück.
Sammlung kopieren – Es gibt zwei Speicherpartitionen. Wenn die erste Partition voll ist, sucht der GC alle zugänglichen Datenstrukturen und kopiert sie auf die zweite Partition, wodurch der Speicher nach dem GC-Prozess komprimiert wird und fortlaufender freier Speicher freigegeben wird.
Einige Programmiersprachen und Plattformen mit integriertem GC (z. B. Java, Lisp, C # und. Net) verwalten Speicherlecks selbst und ermöglichen so eine effizientere Programmierung.
Der dynamische Ansatz der Speicherbereinigung für die automatische Heap-Zuweisung behebt häufige und kostenintensive Fehler, die häufig unbemerkt zu echten Programmfehlern führen.
Da sie schwer zu identifizieren und zu reparieren sind, sind Zuordnungsfehler kostspielig. Daher wird die Speicherbereinigung von vielen als ein wesentliches Sprachmerkmal angesehen, das die Arbeit des Programmierers durch eine geringere manuelle Verwaltung von Heap-Zuordnungen erleichtert. GC ist jedoch nicht perfekt und die folgenden Nachteile sollten berücksichtigt werden:
Beim Freigeben von Speicher verbraucht GC Rechenressourcen.
Der GC-Prozess ist nicht vorhersehbar, was zu verstreuten Sitzungsverzögerungen führt.
Wenn nicht verwendete Objektreferenzen nicht manuell entfernt werden, verursacht GC logische Speicherlecks.
GC weiß nicht immer, wann er in virtuellen Speicherumgebungen moderner Desktop-Computer zu verarbeiten ist.
Der GC-Prozess interagiert schlecht mit Cache- und virtuellen Speichersystemen, was zu Leistungseinstellungsschwierigkeiten führt.