Download de presentatie
De presentatie wordt gedownload. Even geduld aub
GepubliceerdJoke Veenstra Laatst gewijzigd meer dan 10 jaar geleden
1
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 C Object AObject B
4
‘Dangling pointers’ Object C Object AObject B
5
Ofwel garbage collection Uitgevonden door John McCarthy in 1959
6
Reference counting Ieder object krijgt teller Object wordt verwijderd als teller 0 wordt. Object C Object AObject B 11 210
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 Object C Object A Object B 1 2 1 1
9
Tracing garbage collection Geen administratie per object Lijst van alle objecten Eens in zoveel tijd garbage collecten
10
Tracing garbage collection (2) Object B Object A Object C Object D Object E Object A Object B Object C Object D Object E
11
Nu wel perfecte oplossing? Voordelen Nadelen Weinig administratie Alle onbereikbare objecten worden verwijderd Programma moet stoppen tijdens garbage collection 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 AObject BObject C Object D
14
Nog perfectere oplossing? Voordeel: Garbage collection kan ‘on the fly’ door set- administratie bij te houden
16
Moving vs non-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
Moving vs non-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
Verwante presentaties
© 2024 SlidePlayer.nl Inc.
All rights reserved.