Garbage Collection

50
Garbage Collection Maik Theisen Betreuer: Guido Tack Proseminar „Programmiersysteme“ – WS 03/04 Prof. Dr. Gert Smolka Programming Systems Lab, Universität des Saarlandes

description

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. - PowerPoint PPT Presentation

Transcript of Garbage Collection

Page 1: Garbage Collection

Garbage Collection

Maik TheisenBetreuer: Guido Tack

Proseminar „Programmiersysteme“ – WS 03/04Prof. Dr. Gert Smolka

Programming Systems Lab, Universität des Saarlandes

Page 2: Garbage Collection

Gliederung

•Grundlagen

•Copying Garbage Collection

•Generational Garbage Collection

•Ausblick

Page 3: Garbage Collection

Was ist Garbage Collection?

•Automatisierte Bereinigung des Heaps

•Lisp war die erste Sprache mit GC

•Heute in vielen Programmiersprachen eingesetzt

•Ziel: „tote“ Speicherzellen freigeben

Page 4: Garbage Collection

Wozu Garbage Collection?

•Entlastung des Programmierers

•Reduzierung von Fehlern, z.B. Speicherlecks

•Rechtzeitige Freigabe von Speicher

Page 5: Garbage Collection

Lebende Objekte

A

CB

FD E

StackHeap

„root“

„toter“ Knoten

Page 6: Garbage Collection

Verschiedene Formen von GC

•Mark-Sweep

•Mark-Compact

•Copying

•Generational

Page 7: Garbage Collection

Gliederung

•Grundlagen

•Copying Garbage Collection

•Generational Garbage Collection

•Ausblick

Page 8: Garbage Collection

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

Page 9: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

Page 10: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

Page 11: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

Page 12: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

Page 13: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

Page 14: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘ C‘

Page 15: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘ C‘

Page 16: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘ C‘

Page 17: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘ C‘

Page 18: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘

C‘

C‘

Page 19: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘

C‘

C‘

Page 20: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘

C‘

C‘ D‘

Page 21: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘

C‘

C‘ D‘

Page 22: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘

C‘

C‘

D‘

D‘

Page 23: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘

C‘

C‘

D‘

D‘

Page 24: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘

C‘

C‘

D‘

D‘ E‘

Page 25: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘

C‘

C‘

D‘

D‘ E‘

Page 26: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘

C‘

C‘

D‘

D‘ E‘

Page 27: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘

C‘

C‘

D‘

D‘

E‘

E‘

Page 28: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘

C‘

C‘

D‘

D‘

E‘

E‘

Page 29: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘

C‘

C‘

D‘

D‘

E‘

E‘

Page 30: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘

C‘

C‘

D‘

D‘

E‘

E‘

Page 31: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘

C‘

C‘

D‘

D‘

E‘

E‘

Page 32: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘

C‘

C‘

D‘

D‘

E‘

E‘

Page 33: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘

C‘

C‘

D‘

D‘

E‘

E‘

Page 34: Garbage Collection

Funktion (Cheney‘s Algorithmus)A

CB

D EFromspace

scan

free

Tospace

A‘

A‘

B‘

B‘

C‘

C‘

D‘

D‘

E‘

E‘

Page 35: Garbage Collection

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

Page 36: Garbage Collection

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

Page 37: Garbage Collection

Einsatzgebiete

•Systeme, bei denen die Speicherverwaltung von Allokationen dominiert wird

•Systeme mit kleinen, kurzlebigen Objekten

•Systeme, bei denen Verzögerungen bzw. Pausen unkritisch sind

Page 38: Garbage Collection

Probleme

•Art der Durchmusterung des Heaps

•Lokalität geht verloren

•Objekte mit langer Lebensdauer

Page 39: Garbage Collection

Gliederung

•Grundlagen

•Copying Garbage Collection

•Generational Garbage Collection

•Ausblick

Page 40: Garbage Collection

Entwicklung / Entstehung

•Basiert auf der „Weak Generational Hypothesis“

•„Most Objects die young.“

•Erstes Paper von Lieberman und Hewitt 1983

•Basiert auf Heuristiken

Page 41: Garbage Collection

Funktion

jüngste Generation ältere Generation älteste Generation

inter-generationalPointer

Page 42: Garbage Collection

Inter-generational Pointers

•Write Barrier (Schreibzugriff teuer)

•Entry tables (Lesezugriff teuer)

Page 43: Garbage Collection

Inter-generational Pointers

•Write Barrier (Schreibzugriff teuer)

•Entry tables (Lesezugriff teuer)

Page 44: Garbage Collection

Langlebige Objekte

•Durch Heuristiken erraten, welche Objekte lange leben (z.B. Programmcode in Alice)

•Diese Objekte bereits zu Beginn in ältester Generation speichern

Page 45: Garbage Collection

Einsatzgebiete

•Als Weiterentwicklung von Copying GC gleiche Einsatzgebiete

•Eingesetzt in z.B. Java, Alice

•Ungeeignet für kleinere Systeme

Page 46: Garbage Collection

Probleme

•Gleiche Probleme wie Copying GC, aber Problem mit Lebensdauer gelöst

Page 47: Garbage Collection

Ausblick

•Incremental GC

•Region-based memory management

•Statische Analyse der Lebensdauer

Page 48: Garbage Collection

Gliederung

•Grundlagen

•Copying Garbage Collection

•Generational Garbage Collection

•Ausblick

Page 49: Garbage Collection

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

Page 50: Garbage Collection

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)