1 / 50

Garbage Collection

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.

Download Presentation

Garbage Collection

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. Gliederung • Grundlagen • Copying Garbage Collection • Generational Garbage Collection • Ausblick

  3. Was ist Garbage Collection? • Automatisierte Bereinigung des Heaps • Lisp war die erste Sprache mit GC • Heute in vielen Programmiersprachen eingesetzt • Ziel: „tote“ Speicherzellen freigeben

  4. Wozu Garbage Collection? • Entlastung des Programmierers • Reduzierung von Fehlern, z.B. Speicherlecks • Rechtzeitige Freigabe von Speicher

  5. Lebende Objekte „root“ Stack Heap A „toter“ Knoten B C D E F

  6. Verschiedene Formen von GC • Mark-Sweep • Mark-Compact • Copying • Generational

  7. Gliederung • Grundlagen P • Copying Garbage Collection • Generational Garbage Collection • Ausblick

  8. 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

  9. Funktion (Cheney‘s Algorithmus) A C B D E Fromspace A‘ free scan Tospace

  10. Funktion (Cheney‘s Algorithmus) A C B D E Fromspace A‘ free scan Tospace

  11. Funktion (Cheney‘s Algorithmus) A A‘ C B D E Fromspace A‘ B‘ free scan Tospace

  12. Funktion (Cheney‘s Algorithmus) A A‘ C B D E Fromspace A‘ B‘ free scan Tospace

  13. Funktion (Cheney‘s Algorithmus) A A‘ C B D E Fromspace A‘ B‘ free scan Tospace

  14. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ D E Fromspace A‘ B‘ C‘ free scan Tospace

  15. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ D E Fromspace A‘ B‘ C‘ free scan Tospace

  16. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ D E Fromspace A‘ B‘ C‘ free scan Tospace

  17. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ D E Fromspace A‘ B‘ C‘ free scan Tospace

  18. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace A‘ B‘ C‘ free scan Tospace

  19. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace A‘ B‘ C‘ free scan Tospace

  20. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace A‘ B‘ C‘ D‘ free scan Tospace

  21. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace A‘ B‘ C‘ D‘ free scan Tospace

  22. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ A‘ B‘ C‘ D‘ free scan Tospace

  23. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ A‘ B‘ C‘ D‘ free scan Tospace

  24. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace

  25. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace

  26. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace

  27. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ E‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace

  28. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ E‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace

  29. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ E‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace

  30. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ E‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace

  31. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ E‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace

  32. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ E‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace

  33. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ E‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace

  34. Funktion (Cheney‘s Algorithmus) A A‘ C B B‘ C‘ D E Fromspace D‘ E‘ A‘ B‘ C‘ D‘ E‘ free scan Tospace

  35. 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

  36. 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

  37. Einsatzgebiete • Systeme, bei denen die Speicherverwaltung von Allokationen dominiert wird • Systeme mit kleinen, kurzlebigen Objekten • Systeme, bei denen Verzögerungen bzw. Pausen unkritisch sind

  38. Probleme • Art der Durchmusterung des Heaps • Lokalität geht verloren • Objekte mit langer Lebensdauer

  39. Gliederung • Grundlagen P • Copying Garbage Collection P • Generational Garbage Collection • Ausblick

  40. Entwicklung / Entstehung • Basiert auf der „Weak Generational Hypothesis“ • „Most Objects die young.“ • Erstes Paper von Lieberman und Hewitt 1983 • Basiert auf Heuristiken

  41. Funktion inter-generational Pointer jüngste Generation ältere Generation älteste Generation

  42. Inter-generational Pointers • Write Barrier (Schreibzugriff teuer) • Entry tables (Lesezugriff teuer)

  43. Inter-generational Pointers • Write Barrier (Schreibzugriff teuer) • Entry tables (Lesezugriff teuer)

  44. Langlebige Objekte • Durch Heuristiken erraten, welche Objekte lange leben (z.B. Programmcode in Alice) • Diese Objekte bereits zu Beginn in ältester Generation speichern

  45. Einsatzgebiete • Als Weiterentwicklung von Copying GC gleiche Einsatzgebiete • Eingesetzt in z.B. Java, Alice • Ungeeignet für kleinere Systeme

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

  47. Ausblick • Incremental GC • Region-based memory management • Statische Analyse der Lebensdauer

  48. Gliederung • Grundlagen P • Copying Garbage Collection P • Generational Garbage Collection P • Ausblick P

  49. 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

  50. 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)

More Related