Genereller GC-Quellcode

8

Ich untersuche GC-Implementierungen und suche derzeit nach Referenzen und guten Open-Source-GC-Beispielen.

Gibt es eine gute und einfache Generations-GC-Implementierung? Die zweitbeste Sache wären gute Ressourcen und Richtlinien!

Danke!

    
Waneck 24.11.2011, 02:41
quelle

7 Antworten

6

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

an

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.

    
Basile Starynkevitch 24.11.2011, 02:58
quelle
5

Javas HotSpot GC

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.

Mons SGen GC

Monos neues SGen befindet sich auf github auch. Sieh dir die Sgen-Dateien an.

    
Luke Quinane 24.11.2011 03:15
quelle
4

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.

    
bacchus 24.11.2011 02:52
quelle
3

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.

    
Jay Conrod 24.11.2011 02:45
quelle
3

Die Parrot VM verwendet auch einen Generationen-Garbage Collector .

>     
Christoph 24.11.2011 09:10
quelle
2

Obwohl es nicht in C geschrieben ist, enthält die JikesRVM JVM mehrere GC-Implementierungen, einschließlich ein paar Generationen, und ich denke, es ist eher einfach zu verstehen.

    
haggai_e 25.11.2011 05:54
quelle
1

Der Boehm Garbage Collector wird häufig für C- und C ++ - Projekte verwendet.

    
sarnold 24.11.2011 02:47
quelle