Ich habe den Qish Garbage Collector geschrieben (nicht mehr wirklich gepflegt, aber frag mich). Es ist ein kostenloser generativer GC-Kopiervorgang für C (mit einigen Einschränkungen für den Codierungsstil).
Das GCC MELT [meta-] plugin (kostenlos, GPLv3 lizensiert), stellt eine höhere Sprache, MELT, zur Verfügung GCC-Compiler, hat auch einen generierenden GC zum Kopieren über den vorhandenen Ggc
Garbage Collector von GCC. Schauen Sie sich gcc / schmelzen-runtime.c
Beim generationalen Kopieren von GC ist das Generieren des Anwendungscodes in C sehr nützlich. Siehe mein DSL2011-Papier über MELT
Fühlen Sie sich frei, mich mehr zu fragen, ich liebe es, über meine GC-s zu sprechen.
Natürlich, lesen Sie das Garbage Collection Handbuch: Die Kunst der automatischen Speicherverwaltung (Jones, Hosking, Moss ) [ISBN-13: 978-1420082791] ist ein Muss
(hinzugefügt im Jahr 2017)
Schauen Sie auch in Ravenbrooks Speicherpoolsystem , das für generationelle GC verwendet werden kann.
Schauen Sie sich auch die Laufzeit von Ocaml an, die einen guten (single-threaded) Generations-GC hat.
PS. Das Debuggen eines Generationskopier-GC ist schmerzhaft.
Sie können sich die verschiedenen von der JVM bereitgestellten GC-Implementierungen ansehen hier .
Das Whitepaper Speicherverwaltung gibt einen Überblick über die verschiedenen in der JVM implementierten Garbage Collectors . Es ist von 2006, so dass es die neuen G1 Sammlerdetails vermisst, aber es ist ein guter Ausgangspunkt.
Monos neues SGen befindet sich auf github auch. Sieh dir die Sgen-Dateien an.
Das Ovm-Framework ist Open Source und bietet einen Rahmen, der es ermöglicht Wählen Sie mehrere Funktionen zur Speicherbereinigung für Echtzeitsysteme aus.
Laut der Website
Beinhaltet das Minuteman RTGC-Framework, das es erlaubt, aus neu zu wählen Unterstützte RTGC-Funktionen: zeitbasierte Planung (periodisch, locker und hybrid - eine Kombination aus beidem), inkrementelles Stapelscannen, Replikation oder Brooks-Barriere, inkrementelle Objektkopie, Arraylethen, Speichernutzung und GC-Pause Profiling und Tracing.
Obwohl domänenspezifisch, kann es ein guter Ausgangspunkt für Ihre Studie sein.
Ich hoffe, das hilft.
Das V8-Projekt (das in Google Chrome und Android verwendete JavaScript-Modul) ist Open Source und verfügt über einen einfachen generationellen Garbage Collector .
Sie können den Quellcode online durchsuchen . Schauen Sie sich insbesondere heap.cc (Implementierung des Heap- und Scavenge-Algorithmus), spaces.cc (Lower-Level-Heap-Stuff) und mark-compact.cc (vollständiger Garbage-Collector) an.
Die Parrot VM verwendet auch einen Generationen-Garbage Collector .
>Der Boehm Garbage Collector wird häufig für C- und C ++ - Projekte verwendet.
Tags und Links c resources garbage-collection compiler-construction