Cheney's algoritme

Cheney's algoritme, voor het eerst beschreven in een 1970 ACM papier door CJ Cheney, is een methode om garbage collection in computer software systemen. In dit schema wordt de stapel verdeeld in twee gelijke helften, waarvan er slechts een wordt gebruikt op een bepaald moment. Garbage collection wordt uitgevoerd door het kopiëren levende voorwerpen van de ene naar de andere semispace, die dan de nieuwe heap. De gehele oude heap wordt dan weggegooid in een stuk.

Cheney's algoritme reclames items als volgt:

  • Object referenties op de stapel. Object referenties op de stapel worden gecontroleerd. Een van de volgende twee acties wordt voor elk referentieobject dat naar een object vanuit de ruimte:
    • Indien het voorwerp nog niet verplaatst naar de ruimte, wordt dit gedaan door het creëren van een identieke kopie van de ruimte, en het vervangen van de ruimte-uitvoering met een forwarding pointer naar de ruimte kopiëren. Dan update het object referentie te verwijzen naar de nieuwe versie om ruimte.
    • Als het object reeds verplaatst naar de ruimte, werkt u de referentie uit de toezending pointer vanuit de ruimte.
  • Objecten in de ruimte. De garbage collector onderzoekt alle objectverwijzingen in de voorwerpen die zijn gemigreerd naar de ruimte, en voert een van de twee bovengenoemde acties op de objecten waarnaar wordt verwezen.

Zodra alle to-ruimte referenties zijn onderzocht en geactualiseerd, garbage collection is voltooid.

Het algoritme heeft geen stack en twee wijzers buiten het vanuit de ruimte en de ruimte: een pointer naar het begin van de vrije ruimte in de ruimte, en een aanwijzer naar het volgende woord aan de ruimte die moet worden onderzocht . Om deze reden is het ook wel een "twee vingers" collector moet het slechts "twee vingers" wijzend naar de ruimte om te houden van de toestand. De gegevens tussen de twee vingers vertegenwoordigt werk blijven om het te doen.

Het doorsturen pointer wordt alleen gebruikt tijdens de garbage collection proces: Wanneer een verwijzing naar een object al tot de ruimte is gevonden, kan de referentie snel worden bijgewerkt door gewoon het actualiseren van haar pointer naar de forwarding wijzer overeenkomt.

Omdat de strategie is om alle live referenties, en vervolgens alle verwijzingen uitputten in objecten waarnaar wordt verwezen, dit staat bekend als een breedte-eerste lijst kopiëren garbage collection regeling.

Semispace

Cheney gebaseerd zijn werk aan de semispace garbage collector, die door RR Fenichel en JC Yochelson een jaar eerder werd gepubliceerd.

Gelijkwaardigheid met Tri-kleur abstractie

Het eerste lid van de grijze set is de stack zelf. Objecten verwezen op de stapel gekopieerd in de ruimte, die lid zijn van de zwarte en grijze sets bevat.

Het algoritme beweegt elke witte objecten op de grijze set door ze te kopiëren naar de ruimte. Objecten die tussen het scannen aanwijzer en de vrije ruimte aanwijzer op de-ruimte gebied zijn lid van de grijze set nog moeten worden gescand. Objecten onder de scan aanwijzer behoren tot de zwarte set. Objecten worden op de zwarte set bewogen door simpelweg het verplaatsen van de te scannen muisaanwijzer over hen.

Wanneer het scannen aanwijzer de vrije ruimte wijzer bereikt, de grijze set leeg is, en het algoritme eindigt.

(0)
(0)
Commentaren - 0
Geen commentaar

Voeg een reactie

smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile smile smile smile smile
smile smile smile smile
Tekens over: 3000
captcha