Garbage Collection Maik Theisen Betreuer: Guido Tack Proseminar „Programmiersysteme“ – WS 03/04 Prof. Dr.

Download Report

Transcript 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)