1 / 17

Garbage collection

Garbage collection. De rommel van de programmeur. Pieter van Ede. Handmatig geheugenbeheer. Programmeur gooit zelf objecten weg Veel fouten mee gemaakt Geheugenlekken ‘ Dangling pointers’. Geheugenlek. Object A. Object B. Object C. ‘ Dangling pointers’. Object A. Object B.

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. Garbagecollection De rommel van de programmeur Pieter van Ede

  2. Handmatig geheugenbeheer • Programmeur gooit zelf objecten weg • Veel fouten mee gemaakt • Geheugenlekken • ‘Dangling pointers’

  3. Geheugenlek Object A Object B Object C

  4. ‘Dangling pointers’ Object A Object B Object C

  5. Automatisch geheugenbeheer Ofwel garbagecollection Uitgevonden door John McCarthy in 1959

  6. Referencecounting • Ieder object krijgt teller • Object wordt verwijderd als teller 0 wordt. 1 1 Object A Object B 2 Object C 0 1

  7. Perfecte oplossing? Voordelen Nadelen • Makkelijk te implementeren • Objecten verwijderd zodra niet meer nodig • Detectie dode objecten tegelijk met uitvoer programma • Objecten worden opgeblazen • Veel administratie • Problemen met cyclische verwijzingen

  8. Cyclische verwijzingen 1 Object A 1 1 Object B 2 Object C

  9. Tracinggarbagecollection • Geen administratie per object • Lijst van alle objecten • Eens in zoveel tijd garbage collecten

  10. Tracinggarbagecollection (2) Object A Object B Object C Object D Object E Object A Object C Object B Object D Object E

  11. Nu wel perfecte oplossing? Voordelen Nadelen • Weinig administratie • Alle onbereikbare objecten worden verwijderd • Programma moet stoppen tijdens garbagecollection • Hele geheugen moet (meerdere malen) worden doorzocht per scan

  12. Drie-kleuren markering • Om deze nadelen op te lossen, ander algoritme bedacht • Alle objecten in drie disjuncte verzamelingen verdeeld • wit – veroordeeld • zwart – geen verwijzingen naar wit • grijs – overig • Belangrijke invariant: geen object in zwart verwijst naar een object in wit

  13. Drie-kleuren markering (2) Object C Object A Object D Object B

  14. Nog perfectere oplossing? Voordeel: • Garbagecollection kan ‘on the fly’ door set-administratie bij te houden

  15. Tracinggarbagecollection verbeterd

  16. Movingvsnon-moving Non-moving Moving • Object dat weg kan gewoon weggooien • Alle bereikbare objecten naar ander deel van het geheugen kopiëren • Alle verwijzingen updaten

  17. Movingvsnon-moving (2) Moving Non-moving • Na kopiëren objecten hele oude geheugen snel vrij te geven • Steeds veel ruimte om nieuwe objecten te plaatsen • Bij goede verplaatsing objecten, veelgebruikte objecten dicht bij elkaar in geheugen, beter voor cache • Ieder onbereikbaar object afgaan en markeren als bruikbaar geheugen • Geheugen kan sterk gefragmenteerd raken

More Related