Apple verkündet das Aus für den Garbage Collector
Ein großer Kritikpunkt an
Objective-C und Cocoa war seit jeher die Speicherverwaltung: Entwickler mussten sich selbst um die Freigabe von nicht mehr benötigten Speicher kümmern. Für erfahrene Cocoa-Entwickler stellte dies meist kein Problem dar - für Anfänger oder Entwickler, die an Java oder C# gewöhnt sind, war es aber oft eine große Hürde. Bei der manuellen Speicherverwaltung muss der Entwickler Bereiche im Arbeitsspeicher vom Betriebssystem zur Nutzung anfordern und diese wieder ans System zurückgeben, wenn diese nicht mehr benötigt werden.
Mit Mac OS X 10.5 führte Apple daher den Garbage Collector ein. Dieser räumte auf einem Hintergrund-Thread nicht mehr benötigte Speicherbereiche auf. Da eine recht komplexe Analyse nötig war, liefen die mit Garbage Collector geschriebenen Programme messbar langsamer. Außerdem kam es immer wieder zu Problemen mit noch nicht vollständig an den Garbage Collector angepassten Programmbibliotheken. Da der Entwickler auch keine Möglichkeit mehr hatte, manuell größere nicht mehr benötigte Speicherbereiche freizugeben, stieg in manchen Programmteilen der maximal benötigte Arbeitsspeicher stark an (wenn zum Beispiel kurzzeitig größere Berechnungen mit viel Speicherbedarf durchgeführt wurden).
Apple erkannte wohl schnell, dass der Garbage Collector nicht der richtige Weg für eine bessere Speicherverwaltung in Cocoa war. Da der Garbage Collector auf Mobilgeräten wegen des Leistungshungers nicht in Betracht kam, führte man mit OS X 10.6 und iOS 4 ARC ein. ARC bedeutet Automatic Reference Counting und nimmt dem Entwickler die meisten Aspekte der Speicherverwaltung ab. Anders als beim Garbage Collector wird nicht während die App läuft eine Analyse durchgeführt, sondern schon beim Kompilieren der App. Dies führt dazu, dass ein mit ARC kompiliertes Programm ähnlich effizient ausgeführt werden kann als hätte sich der Entwickler selbst um die Speicherverwaltung bemüht.
Apple hat nun bekanntgegeben, dass ab dem
1. Mai 2015 keine Programme mehr im Mac App Store eingereicht werden können, die noch den Garbage Collector einsetzen. Schon mit OS X 10.8 warnte Apple Entwickler, dass der Garbage Collector nicht mehr weiterentwickelt und in den kommenden Jahren auch nicht mehr unterstützt wird.
Empfohlen wird Entwicklern der Umstieg auf ARC, Apple hat hierfür einen Anleitung für Entwickler veröffentlicht:
. In Apples neuer Sprache Swift wird automatisch ARC eingesetzt, eine manuelle Speicherverwaltung ähnlich wie in Objective-C existiert nicht mehr.
Weiterführende Links: