Niektóre nowsze języki wdrażają ARC w swoich kompilatorach (Swift i Rust, żeby wymienić parę). Rozumiem, że osiąga się to samo, co GC w czasie wykonywania (odciążenie ręcznej alokacji od programisty), a przy tym jest znacznie wydajniejsze.Jaka jest zaleta GC środowiska wykonawczego w porównaniu z protokołem ARC w czasie kompilacji?
Rozumiem, że ARC może stać się złożonym procesem, ale ze złożonością nowoczesnych śmieciarek wydaje się, że wdrożenie ARC nie byłoby bardziej skomplikowane. Jednak wciąż jest mnóstwo języków i frameworków używających GC do zarządzania pamięcią, a nawet język Go, który jest przeznaczony do programowania systemów, używa GC.
Naprawdę nie mogę zrozumieć, dlaczego GC byłaby lepsza od ARC. Czy coś mi umyka?
Aby uzyskać ogólne porównanie pojęć śledzenia GC w porównaniu z licznikiem odwołań, niniejszy artykuł "Unified Theory of Garbage Collection" pokazuje, w jaki sposób można je postrzegać jako ściśle ze sobą powiązane. Różne optymalizacje i poprawki do każdego podejścia po prostu poruszają się po spektrum, które je łączy: https://www.cs.virginia.edu/~cs415/reading/bacon-garbage.pdf – algal
oh, tak, uwielbiam ten papier: D dzięki za połączenie –