Einige neuere Sprachen implementieren ARC in ihre Compiler (Swift und Rust, um ein paar zu nennen). Wie ich verstehe, erreicht dies das gleiche wie Laufzeit-GC (die Last der manuellen Freigabe von dem Programmierer wegzunehmen), während es wesentlich effizienter ist.
Ich verstehe, dass ARC ein komplexer Prozess werden könnte, aber mit der Komplexität moderner Garbage-Collectors scheint es nicht mehr so schwierig zu sein, ARC zu implementieren. Es gibt jedoch immer noch eine Vielzahl von Sprachen und Frameworks, die GC für die Speicherverwaltung verwenden, und sogar die Go-Sprache, die auf die Systemprogrammierung abzielt, verwendet GC.
Ich kann wirklich nicht verstehen, warum GC der ARK vorzuziehen wäre. Fehle ich hier etwas?
Es gibt eine Reihe von Kompromissen hier, es ist ein komplexes Thema. Hier sind die Großen:
GC-Profis:
ARC-Profis:
Meine persönliche Meinung ist, dass die einzigen zwei Punkte, auf die in den meisten Fällen wirklich ankommt sind:
Ich denke, dass diese beiden Probleme Deal-Breaker sind, aber in Ermangelung einer besseren Idee müssen Sie nur auswählen, welches schreckliche Problem sich für Sie noch verschlimmert.
Tags und Links memory-leaks garbage-collection automatic-ref-counting