美文网首页
垃圾回收机制与oc的ARC

垃圾回收机制与oc的ARC

作者: 寻雨的人 | 来源:发表于2016-10-04 21:00 被阅读347次

    oc的垃圾回收与ARC

    ARC介于自动垃圾回收(GC)和手动内存管理之间。就像垃圾回收,ARC让程序员不再需要书写retain/release/autorelease语句。但它又不同于垃圾回收,ARC无法处理retaincycles。在ARC里,如果两个对象互相强引用(strong references)将导致它们永远不会被释放,甚至没有任何对象引用它们。

    因此,尽管ARC能免去程序员大部分内存管理问题,但仍然要程序员自己避免retaincycles或手动打断对象之间的retain循环。

    ARC和苹果的垃圾回收之间还有一个重要的不同:ARC不是强制的。而对于苹果的垃圾回收,要么整个程序都使用,要么都不用。也就是说在app中的所有O-C代码,包括所有的苹果框架和所有的第3方库必须支持垃圾回收,才能使用垃圾回收。相反,ARC和非ARC代码可以在一个app中和平共处。这使得将项目可以零星地迁移到ARC 而不会像垃圾回收起初遇到的各种兼容性和稳定性的问题。

    java的垃圾回收与oc的ARC:

    1.GC of java is Runtime, while ARC is compile time.(GC是java运行时,而ARC是编译时。)

    2.GC has reference to the objects at runtime and check for the dependencies of object runtime. While ARC appends the release, retain, autorelease calls at compiletime.(GC引用的对象在运行时,检查运行时对象的依赖项。而ARC在编译时间 添加调用release, retain, autorelease)

    相关文章

      网友评论

          本文标题:垃圾回收机制与oc的ARC

          本文链接:https://www.haomeiwen.com/subject/pbksyttx.html