垃圾收集是否用于生产质量的Cocoa应用程序?

cal*_*ugh 7 cocoa garbage-collection objective-c

我主要想知道垃圾收集对性能的影响.对于发布应用程序,垃圾收集的使用是否令人不悦?

我能想到的另一个问题是使用垃圾收集可能会导致编程更加糟糕.

您是否在应用中使用垃圾回收?

bbu*_*bum 22

垃圾收集用于许多生产质量应用程序.Xcode,Automator,系统偏好设置和其他几个系统应用程序是GC'd,您可以预期这种趋势会持续一段时间.

同样,许多开发人员已经接受了GC并且只在他们的应用程序中使用它.例如,Intuit用于Mac的Quicken和QuickBooks的新版本是垃圾收集的.

GC也有许多优点.脱离我的头脑和个人经验:

  • 它使多线程更容易; 简单的分配是所有权的原子声明

  • 它将一堆内存管理卸载到其他内核; 它自然是并发的,并从主线程(或计算线程)卸载一堆计算

  • 在许多情况下,分配和释放可以完全在线程的上下文中发生,因此消除了对全局同步或锁定的任何需要

  • 每次发布Mac OS X时,收集器都会变得更快,并且这种趋势将继续下去(就像它与系统的其他部分一样).通过将更多应用程序的计算负载卸载到系统提供的框架,您的应用程序将从底层系统的优化中获得越来越多的收益.

  • 因为收集器非常了解对象图 - 对象之间的指针 - 在内存中,它使分析和调试变得更加容易.现在的问题是"给我一个清单,说明为什么这个物体比我想象的要坚持的时间更长?",而不是"这个悬垂的指针来自哪里?".

这并不是说没有工作要做,以使您的应用程序在GC下以最佳方式工作.肯定有这样的任务!

  • 值得注意的是垃圾收集在10.8中已被弃用. (4认同)

小智 5

自20世纪60年代以来,垃圾收集一直存在,并在许多已发布的应用程序中使用.所有.NET应用都使用垃圾回收.Apple在Xcode中使用libauto.

垃圾收集通常会导致Cocoa中的应用程序质量更高,因为开发人员可以免除内存管理负担.有大量的Cocoa应用程序泄漏!(虽然它可能没有大量的内存)

我倾向于使用gc,因为我可以更快地扭转我的应用程序,而不必担心消息传递僵尸对象!