Unity: IL2CPP integriert die Speicherbereinigung

Unity hat am 9. Juli 2015 die internen Schnittstellen zwischen IL2CPP und der Speicherbereinigung beschrieben. Der Beitrag erklärt, wie der Laufzeitcode mit dem Garbage Collector kommuniziert und welche Wurzeln aus verwaltetem Code dabei berücksichtigt werden.

Der Artikel ist Teil einer technischen Reihe zu IL2CPP. Die vorherige Folge zu P/Invoke-Wrappern behandelte die Übergabe zwischen verwaltetem C#-Code und nativen C++-Funktionen. Unity beschreibt IL2CPP als Kombination aus Ahead-of-Time-Compiler und Laufzeitbibliothek, die unter anderem Speicherverwaltung, Threads und interne Aufrufe bereitstellt.

IL2CPP verwaltet mehrere Arten von GC-Wurzeln

Für die Speicherbereinigung muss die Laufzeit erkennen, welche Objekte weiterhin erreichbar sind. Unity unterscheidet dabei unter anderem statische Felder, lokale Referenzen auf Thread-Stacks und weitere Verbindungen aus dem verwalteten Code. Der IL2CPP-Laufzeitcode meldet diese Informationen an den Garbage Collector und hält sie während der Ausführung auf dem aktuellen Stand.

Interne APIs sind nicht für Projektcode vorgesehen

Die technischen Beispiele beziehen sich auf Header und Funktionen aus der internen IL2CPP-Laufzeit. Unity weist ausdrücklich darauf hin, dass diese Schnittstellen nicht öffentlich unterstützt werden und sich ändern oder entfallen können. Für Entwickler ist der Beitrag deshalb vor allem als Dokumentation der damaligen Laufzeitarchitektur interessant, nicht als Anleitung für eine stabile Programmierschnittstelle.

Weitere News

Weitere News

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein