Guile GC Heap-Sizing-Heuristiken: Eine Live-Lock-Geschichte

2025-05-26

Das Guile-Projekt integriert einen konservativen Garbage Collector auf Basis von Nofl. Derzeit wird eine wachsende Heap-Strategie verwendet, wobei die Heap-Größe mit einem Multiplikator angepasst wird, um Fragmentierung zu berücksichtigen. Starke Fragmentierung kann jedoch zu Allokationsfehlern und Deadlocks führen, selbst wenn der Heap doppelt so groß ist wie erwartet. Der Beitrag untersucht Lösungen: Erhöhung des Multiplikators, Änderung der Heap-Organisation und Reservierung leerer Blöcke für den Nofl-Collector. Ziel ist eine effiziente Behandlung der Fragmentierung und Vermeidung von Deadlocks.

Mehr lesen
Entwicklung

Einen Garbage Collector von Grund auf neu bauen: Eine 20-jährige Reise

2025-05-12

Ein Programmierer mit 20 Jahren Erfahrung beschloss nach dem Studium des Immix-Garbage-Collection-Algorithmus, einen neuen Garbage Collector für Guile Scheme zu implementieren. Sein ursprüngliches Ziel war es, eine generische Speicherverwaltungsschnittstelle zu erstellen, aber er entwickelte schließlich einen neuen Garbage Collector namens Nofl, der eine Nebentabelle eines Mark-and-Sweep-Collectors für die Bump-Pointer-Allokation verwendet. Der Autor teilt auch seine Erfahrungen mit der Einreichung seiner Forschungsergebnisse auf einer akademischen Konferenz und seine Reflexionen über akademische Forschung und Industrie.

Mehr lesen
Entwicklung

Die verwirrende Leistung der generationsweisen Garbage Collection

2025-02-09

Der Autor führte Experimente durch, um die Leistungsvorteile der generationsweisen Garbage Collection zu überprüfen. Überraschenderweise zeigten die Ergebnisse, dass die generationsweise Garbage Collection in verschiedenen Benchmarks länger dauerte als die Whole-Heap-Garbage Collection. Der Artikel untersucht mehrere mögliche Ursachen, darunter den Overhead der Schreibbarriere, die Auswahl der Größe des Nursery, die Repräsentativität des Benchmarks und die Häufigkeit der Collection. Der Autor kommt zu dem Schluss, dass weitere Untersuchungen erforderlich sind, um die Ursache zu ermitteln.

Mehr lesen
Entwicklung Leistungstests