500 likes | 763 Views
Garbage Collection. Maik Theisen. Betreuer: Guido Tack. Proseminar „Programmiersysteme“ – WS 03/04 Prof. Dr. Gert Smolka Programming Systems Lab, Universität des Saarlandes. Gliederung. Grundlagen Copying Garbage Collection Generational Garbage Collection Ausblick.
E N D
Garbage Collection Maik Theisen Betreuer: Guido Tack Proseminar „Programmiersysteme“ – WS 03/04 Prof. Dr. Gert Smolka Programming Systems Lab, Universität des Saarlandes
Gliederung • Grundlagen • Copying Garbage Collection • Generational Garbage Collection • Ausblick
Was ist Garbage Collection? • Automatisierte Bereinigung des Heaps • Lisp war die erste Sprache mit GC • Heute in vielen Programmiersprachen eingesetzt • Ziel: „tote“ Speicherzellen freigeben
Wozu Garbage Collection? • Entlastung des Programmierers • Reduzierung von Fehlern, z.B. Speicherlecks • Rechtzeitige Freigabe von Speicher
Lebende Objekte „root“ Stack Heap A „toter“ Knoten B C D E F
Verschiedene Formen von GC • Mark-Sweep • Mark-Compact • Copying • Generational
Gliederung • Grundlagen P • Copying Garbage Collection • Generational Garbage Collection • Ausblick
Entwicklung / Entstehung • Erster CGC entstand 1969, war allerdings rekursiv (Fenichel, Yochelson) • Cheney entwickelte 1970 einen iterativen Algorithmus • Grundidee: Unterteilung des Heaps in „Semi-Spaces“ und Kopieren der Daten von einem „Semi-Space“ zum anderen
Funktion (Cheney‘s Algorithmus) A C B D E Fromspace A‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A C B D E Fromspace A‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B D E Fromspace A‘ B‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B D E Fromspace A‘ B‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B D E Fromspace A‘ B‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ D E Fromspace A‘ B‘ C‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ D E Fromspace A‘ B‘ C‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ D E Fromspace A‘ B‘ C‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ D E Fromspace A‘ B‘ C‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace A‘ B‘ C‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace A‘ B‘ C‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace A‘ B‘ C‘ D‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace A‘ B‘ C‘ D‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ A‘ B‘ C‘ D‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ A‘ B‘ C‘ D‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ E‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ E‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ E‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ E‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ E‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ E‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ E‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace
Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ E‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace
Effizienz • Cheney‘s Algorithmus läuft in der Komplexität O(n), wobei n die Anzahl der lebenden Objekte ist • Abhängig von der Größe des Heaps • Abhängig von der Größe der Objekte
Große Objekte • Werden oft kopiert, benötigen spezielle Behandlung • Bereiche im Heap für diese Objekte reservieren und GC dort mit anderer Technik durchführen, z.B. Mark-Sweep
Einsatzgebiete • Systeme, bei denen die Speicherverwaltung von Allokationen dominiert wird • Systeme mit kleinen, kurzlebigen Objekten • Systeme, bei denen Verzögerungen bzw. Pausen unkritisch sind
Probleme • Art der Durchmusterung des Heaps • Lokalität geht verloren • Objekte mit langer Lebensdauer
Gliederung • Grundlagen P • Copying Garbage Collection P • Generational Garbage Collection • Ausblick
Entwicklung / Entstehung • Basiert auf der „Weak Generational Hypothesis“ • „Most Objects die young.“ • Erstes Paper von Lieberman und Hewitt 1983 • Basiert auf Heuristiken
Funktion inter-generational Pointer jüngste Generation ältere Generation älteste Generation
Inter-generational Pointers • Write Barrier (Schreibzugriff teuer) • Entry tables (Lesezugriff teuer)
Inter-generational Pointers • Write Barrier (Schreibzugriff teuer) • Entry tables (Lesezugriff teuer)
Langlebige Objekte • Durch Heuristiken erraten, welche Objekte lange leben (z.B. Programmcode in Alice) • Diese Objekte bereits zu Beginn in ältester Generation speichern
Einsatzgebiete • Als Weiterentwicklung von Copying GC gleiche Einsatzgebiete • Eingesetzt in z.B. Java, Alice • Ungeeignet für kleinere Systeme
Probleme • Gleiche Probleme wie Copying GC, aber Problem mit Lebensdauer gelöst
Ausblick • Incremental GC • Region-based memory management • Statische Analyse der Lebensdauer
Gliederung • Grundlagen P • Copying Garbage Collection P • Generational Garbage Collection P • Ausblick P
Literatur • Gargage Collection, Richard Jones & Rafael Lins • Concepts in Programming Languages, John Mitchell • A Nonrecursive List Compacting Algorithm, C.J. Cheney • Simple Generational Garbage Collection and Fast Allocation, Andrew W. Appel • Generation Scavenging, David Ungar
Scheduling • Ziel: Reduzierung der Pausezeiten • GC durchführen, wenn User nicht gestört wird, z.B. beim Warten auf I/O • Ungeeignet für Echtzeitsysteme • Key Objects (z.B. Wurzel von Bäumen)