Inhaltsverzeichnis:
Definition - Was bedeutet Garbage Collection (GC)?
Garbage Collection (GC) ist ein dynamischer Ansatz für die automatische Speicherverwaltung und Heap-Zuweisung, bei dem tote Speicherblöcke verarbeitet, identifiziert und Speicher für die Wiederverwendung neu zugewiesen werden. Der Hauptzweck der Speicherbereinigung besteht darin, Speicherverluste zu reduzieren.
Die GC-Implementierung erfordert drei Hauptansätze:
- Mark-and-Sweep - Wird ausgeführt, wenn der Speicher voll ist, sucht der GC den gesamten verfügbaren Speicher und greift auf den verfügbaren Speicher zurück.
- Referenzzählung - Zugeordnete Objekte enthalten eine Referenzzählung der Referenznummer. Wenn die Speicheranzahl Null ist, ist das Objekt Müll und wird dann zerstört. Der freigegebene Speicher kehrt zum Speicherhaufen zurück.
- Kopiersammlung - Es gibt zwei Speicherpartitionen. Wenn die erste Partition voll ist, sucht der GC alle zugänglichen Datenstrukturen und kopiert sie auf die zweite Partition. Dadurch wird der Speicher nach dem GC-Vorgang komprimiert und ununterbrochener freier Speicher ermöglicht.
Einige Programmiersprachen und -plattformen mit integriertem GC (z. B. Java, Lisp, C # und .Net) verwalten Speicherverluste automatisch und ermöglichen so eine effizientere Programmierung.
Techopedia erklärt Garbage Collection (GC)
Der dynamische Ansatz der Garbage Collection zur automatischen Heap-Zuweisung behebt häufige und kostspielige Fehler, die häufig zu Programmfehlern führen, wenn sie nicht erkannt werden.
Zuordnungsfehler sind kostspielig, da sie schwer zu identifizieren und zu reparieren sind. Daher wird die Speicherbereinigung von vielen als ein wesentliches Sprachmerkmal angesehen, das dem Programmierer die Arbeit mit einer geringeren manuellen Heap-Zuordnungsverwaltung erleichtert. GC ist jedoch nicht perfekt, und die folgenden Nachteile sollten berücksichtigt werden:
- Wenn Speicher freigegeben wird, verbraucht der GC Rechenressourcen.
- Der GC-Prozess ist unvorhersehbar, was zu Verzögerungen bei verteilten Sitzungen führt.
- Wenn nicht verwendete Objektreferenzen nicht manuell entsorgt werden, führt der GC zu logischen Speicherverlusten.
- GC weiß nicht immer, wann in virtuellen Speicherumgebungen moderner Desktop-Computer gearbeitet werden muss.
- Der GC-Prozess interagiert schlecht mit Cache- und virtuellen Speichersystemen, was zu Problemen bei der Leistungsoptimierung führt.