Garbage Collection Maik Theisen Betreuer: Guido Tack Proseminar „Programmiersysteme“ – WS 03/04 Prof. Dr.
Download ReportTranscript Garbage Collection Maik Theisen Betreuer: Guido Tack Proseminar „Programmiersysteme“ – WS 03/04 Prof. Dr.
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 B D C E F „toter“ Knoten Verschiedene Formen von GC •Mark-Sweep •Mark-Compact •Copying •Generational Gliederung •Grundlagen •Copying Garbage Collection •Generational Garbage Collection •Ausblick P Entwicklung / Entstehung •Erster CGC entstand 1969, war allerdings rekursiv (Fenichel, Yochelson) •Cheney entwickelte 1970 einen iterativen Algorithmus •Grundidee: Unterteilung des Heaps in „SemiSpaces“ 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‘ B C B‘ D E Fromspace A‘ B‘ C‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ D E Fromspace A‘ B‘ C‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ D E Fromspace A‘ B‘ C‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ D E Fromspace A‘ B‘ C‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ C‘ D E Fromspace A‘ B‘ C‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ C‘ D E Fromspace A‘ B‘ C‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ C‘ D E Fromspace A‘ B‘ C‘ D‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ C‘ D E Fromspace A‘ B‘ C‘ D‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ C‘ D E Fromspace D‘ A‘ B‘ C‘ D‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ C‘ D E Fromspace D‘ A‘ B‘ C‘ D‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ C‘ D E Fromspace D‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ C‘ D E Fromspace D‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ C‘ D E Fromspace D‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ C‘ D E D‘ A‘ B‘ C‘ Fromspace E‘ D‘ E‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ C‘ D E D‘ A‘ B‘ C‘ Fromspace E‘ D‘ E‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ C‘ D E D‘ A‘ B‘ C‘ Fromspace E‘ D‘ E‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ C‘ D E D‘ A‘ B‘ C‘ Fromspace E‘ D‘ E‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ C‘ D E D‘ A‘ B‘ C‘ Fromspace E‘ D‘ E‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ C‘ D E D‘ A‘ B‘ C‘ Fromspace E‘ D‘ E‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ C‘ D E D‘ A‘ B‘ C‘ Fromspace E‘ D‘ E‘ free scan Tospace Funktion (Cheney‘s Algorithmus) A A‘ B C B‘ C‘ D E D‘ A‘ B‘ C‘ Fromspace E‘ 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)