Garbage Collection Maik Theisen Betreuer: Guido Tack Proseminar Programmiersysteme – WS 03/04...
-
Upload
leni-genzer -
Category
Documents
-
view
104 -
download
1
Transcript of Garbage Collection Maik Theisen Betreuer: Guido Tack Proseminar Programmiersysteme – WS 03/04...
Garbage Collection
Maik TheisenBetreuer: Guido Tack
Proseminar „Programmiersysteme“ – WS 03/04Prof. 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
A
CB
FD E
StackHeap
„root“
„toter“ Knoten
Verschiedene Formen von GC
•Mark-Sweep
•Mark-Compact
•Copying
•Generational
Gliederung
•Grundlagen
•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
CB
D EFromspace
scan
free
Tospace
A‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘ C‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘ C‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘ C‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘ C‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘
C‘
C‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘
C‘
C‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘
C‘
C‘ D‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘
C‘
C‘ D‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘
C‘
C‘
D‘
D‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘
C‘
C‘
D‘
D‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘
C‘
C‘
D‘
D‘ E‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘
C‘
C‘
D‘
D‘ E‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘
C‘
C‘
D‘
D‘ E‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘
C‘
C‘
D‘
D‘
E‘
E‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘
C‘
C‘
D‘
D‘
E‘
E‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘
C‘
C‘
D‘
D‘
E‘
E‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘
C‘
C‘
D‘
D‘
E‘
E‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘
C‘
C‘
D‘
D‘
E‘
E‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘
C‘
C‘
D‘
D‘
E‘
E‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘
C‘
C‘
D‘
D‘
E‘
E‘
Funktion (Cheney‘s Algorithmus)A
CB
D EFromspace
scan
free
Tospace
A‘
A‘
B‘
B‘
C‘
C‘
D‘
D‘
E‘
E‘
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
•Copying Garbage Collection
•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
jüngste Generation ältere Generation älteste Generation
inter-generationalPointer
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
•Copying Garbage Collection
•Generational Garbage Collection
•Ausblick
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)