【问题标题】:Garbage Collector vs ARC. Which one is better? [duplicate]垃圾收集器与 ARC。哪一个更好? [复制]
【发布时间】:2012-07-08 00:09:32
【问题描述】:

可能重复:
What is the difference between Objective-C automatic reference counting and garbage collection?

iOS 使用 ARC。但真的更好吗?是更适合移动平台还是总体上更好?

【问题讨论】:

    标签: garbage-collection automatic-ref-counting


    【解决方案1】:

    总体来说比较好。当编译器可以生成不会留下垃圾的代码时,你为什么要忍受垃圾收集器的运行时开销? ARC 在没有垃圾收集器的情况下为您提供垃圾收集的内存管理便利。

    【讨论】:

    • 这完全是错误的。 ARC 在代码的很多地方都穿插了 atomic 操作;这变得昂贵。您可以阅读任何数量的有关此问题的论文,以了解关于 GC 实现卓越 CPU 利用率的共识。内存使用并不像某些疯子让你相信的那么糟糕。我之前写过一篇愤怒的文章:taylanub.github.io/webapps-js-gcApple 最有可能坚持引用计数,因为它在他们的框架中根深蒂固。
    • 我不记得 -retain-release 过去曾被称为重大性能问题。您是否有任何测量结果表明它们存在问题? ARC 与开发人员之前为管理内存所做的相同,只是它在编译代码时自动执行。我支持这个答案,但欢迎您发表自己的意见——没有理由对内存管理“生气”。至于 Apple:他们不止一次地切换 处理器 并且有一个正常工作的 GC;我怀疑框架问题导致他们选择了 ARC。
    • 我对那些满怀信心地提出高度错误的主张,放在银盘上,当他们被指正时拒绝纠正错误的人最生气;就像我在那个页面上批评的作者一样。但是,如果不知道多线程环境中的 RC 需要用 atomic 操作乱扔代码,并且忽略 RC 不能处理循环没有程序员帮助的结构(在闭包/“块”的某些用法中无处不在)。显然两者都不是更好,尤其是在一般情况下。
    猜你喜欢
    • 2012-12-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-03
    • 1970-01-01
    • 2011-08-13
    • 2010-10-04
    相关资源
    最近更新 更多