Push-Nachrichten von MacTechNews.de
Würden Sie gerne aktuelle Nachrichten aus der Apple-Welt direkt über Push-Nachrichten erhalten?

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:

Kommentare

zod198822.02.15 14:16
Gut so, bringt die Apps näher an iOS ran, da gabs das nie.
0
Mendel Kucharzeck
Mendel Kucharzeck22.02.15 14:49
zod1988
Der GC war auf dem Mac auch nie sooooo verbreitet aufgrund der vielen Problemchen...
0
zod198822.02.15 16:46
Ja, das stimmt.
0
dom_beta22.02.15 22:31
führte man mit OS X 10.6 und iOS 4 ARC ein


basiert iOS 4 auf 10.6?

10.6 kam im Jahr 2009 auf den Markt, kann es sein, dass das nicht ganz synchron lief?

iOS 5 müsste auf 10.7 basieren
iOS 6 auf 10.8
iOS 7 auf 10.9
iOS 8 auf 10.10
...
0
dan@mac
dan@mac22.02.15 23:06
dom_beta
führte man mit OS X 10.6 und iOS 4 ARC ein


basiert iOS 4 auf 10.6?

10.6 kam im Jahr 2009 auf den Markt, kann es sein, dass das nicht ganz synchron lief?

iOS 5 müsste auf 10.7 basieren
iOS 6 auf 10.8
iOS 7 auf 10.9
iOS 8 auf 10.10

Finde nicht sagen, dass jede iOS Version auf einer OS X Version aufbaut. Das erste iOS war ein "OS X mini". Seit dem basiert jedes weitere iOS auf seinem Vorgänger. Nur Features (wie ARC) wurden früher oder später auf beiden Plattform parallel implementiert.
0
Stefab
Stefab23.02.15 02:09
Gut so. Weiß eh nicht, wieso der überhaupt implementiert wurde und nicht gleich ARC, denke so viel aufwendiger wird das auch nicht sein, aber sinnvoller, als ein Garbage Collector.
0
zod198823.02.15 06:28
dan@mac
Seit dem basiert jedes weitere iOS auf seinem Vorgänger.

So kann man das nicht sagen. Jedes iOS und jedes OS X wird unabhängig von einander entwickelt und die Kernel-Features wandern hin und her. Meistens haben die Kernel selbst unterschiedliche Versionen, meist war die iOS Version eine Version höher als die des veröffentlichten OS X. Mittlerweile ist der Abstand aber geschrumpft.

10.10.2 ist Kernel 14.1.0 (XNU 2782.10.72~2) und iOS 8.1.3 ist 14.0.0 (2783.3.26~3).
0
o.wunder
o.wunder23.02.15 13:44
Gute Sache
0
eliot23.02.15 13:51
Ich habe die GB nie verwendet, da Reference Counting hinreichend ist und gut funktioniert.
Unter Java finde ich es wirklich nervig, dass nicht selbst bestimmen kann, ob
ein Objekt auf dem Heap oder Stack landet und ich auch nicht den Speicher aktiv freigeben kann.
Von daher: Eine gute Entscheidung, eine Technologie weniger, die man pflegen muss.
0
TiBooX
TiBooX23.02.15 14:48
Interessant wäre da noch welche eigenen Klassen Apple von GC befreit hat.

Und wann kommt endlich mal NSXMLDocument ... auf's iOS ?
People who are really serious about software should make their own hardware [A. Kay]
0

Kommentieren

Sie müssen sich einloggen, um die News kommentieren zu können.