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 aus dem Programmierer entfernt), während deutlich effizienter.Was ist der Vorteil von Runtime GC gegenüber ARC zur Kompilierungszeit?
Ich verstehe, dass ARC ein komplexer Prozess werden könnte, aber mit der Komplexität moderner Garbage Collectors scheint es, als wäre es nicht komplexer, 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 ARC vorzuziehen wäre. Fehle ich hier etwas?
Für einen allgemeinen konzeptionellen Vergleich der Verfolgungs-GC vs Referenzzählung zeigt dieser Artikel, "Eine vereinheitlichte Theorie der Garbage Collection", wie sie als strikte Duale voneinander gesehen werden können. Verschiedene Optimierungen und Verbesserungen an jedem Ansatz bewegen Sie einfach entlang eines Spektrums, das sie verbindet: https://www.cs.virginia.edu/~cs415/reading/bacon-garbage.pdf – algal
oh, yeah, ich liebe dieses Papier: D Danke für die Verknüpfung –