一些较新的语言正在将ARC应用到他们的编译器中(Swift和Rust,仅举几例)。据我所知,这实现了与运行时GC相同的功能(将手动解除分配的负担远离程序员),同时显着提高效率。
我知道ARC可能会成为一个复杂的过程,但由于现代垃圾收集器的复杂性,实现ARC似乎并不复杂。但是,仍有大量的语言和框架使用GC进行内存管理,甚至用于系统编程的Go语言也使用GC。
我真的不明白为什么GC会优于ARC。我在这里错过了什么吗?
答案 0 :(得分:22)
这里涉及一系列权衡,这是一个复杂的话题。这是最重要的:
GC专业人士:
ARC专业人士:
我个人对此的看法是,对于大多数情况,真正重要的唯一两点是:
我觉得这两个问题都是交易破坏者,但是如果没有更好的想法,你只需挑选哪个可怕的问题听起来更糟糕。