Garbage Collection

Post on 03-Jan-2016

75 views 0 download

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

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)