Welche Speicherverwaltungsalgorithmen werden von den großen Compiler-Anbietern verwendet?

9

Dies ist eine Teilmenge von eine vorherige Frage .

Als Übung schreibe ich einen Speichermanager - also den Code, der malloc implementiert, realloc und free (oder neu und löscht). Die RTL für meine Sprache, Delphi, ermöglicht den einfachen Austausch des RTL-Speichermanagers . Für diejenigen von Ihnen, die C ++ verwenden, ist dies ähnlich, aber niedriger als, überschreiben, neu und löschen (es hakt sich in die RTL selbst ein und ist kein Sprachfeature).

Ich suche nach Quellen über qualitativ hochwertige Ansätze, die andere zum selben Problem gemacht haben, und versuche herauszufinden, welche Algorithmen andere große Compiler-Anbieter verwenden. Während Delphi gut dokumentiert ist, kann ich keine Informationen über die Implementierungen finden, die von MS VC ++, .Net oder Objective C verwendet werden. Diese Hersteller scheinen nicht (?) Zuzulassen, dass ihre RTL wie in Delphi eingebunden wird. Die gesamte Dokumentation scheint auf höherer Ebene zu liegen, wie zum Beispiel NSAutoReleasePool , um ein zufälliges Beispiel zu wählen - viel zu hoch für diese Frage.

Welche Speicherverwaltungsalgorithmen werden von großen Anbietern (Microsoft VC ++ und .NET und Apple Objective C) in ihren Laufzeitbibliotheken verwendet?

Ein Beispiel für eine große Antwort wäre ein Dokument, das die Implementierung des Speichermanagers beschreibt, z. B. oder ein Link zu einem veröffentlichten Papier. Ein Beispiel für eine nützliche Antwort wäre der Algorithmus: "Die VC ++ - Laufzeit verwendet den Hoard-Allokator . p>     

David M 30.04.2013, 10:01
quelle

1 Antwort

1

Objective-C verwendet die automatische Referenzzählung (ARC). Es ist ab iOS5 aktiviert. Apple hat das US-Patent 20030196063 "Transparentes lokales und verteiltes Speicherverwaltungssystem".

Java verwendet ein ausgeklügeltes Speicherbereinigungsschema, das sich im Laufe der Jahre weiterentwickelt hat. Siehe "Abstimmen der Speicherbereinigung mit der 5.0 Java [tm] virtuellen Maschine" Ссылка

    
Richard Wеrеzaк 14.05.2013 04:45
quelle