自动释放池与垃圾收集的连接是什么



我从苹果文档中读到了这篇文章。。

在垃圾回收的环境中,发布是一个无操作(一个什么都不做的指令)。因此,NSAutoreleasePool提供了一个drain方法,该方法在引用计数环境中的行为与调用释放相同,但在垃圾收集环境中触发垃圾收集(如果自上次收集以来分配的内存大于当前阈值)。因此,通常应该使用drain而不是release来处理自动释放池。

但没有得到的含义

1) "如果自上次采集以来分配的内存大于当前阈值。"

2) ios不支持垃圾收集器,那么drain和垃圾收集器有什么用

1)这可能意味着GC会记住已分配的内存量,下次调用drain时,会将已分配内存量与上一次进行比较。只有当更改足够重要时,才会进行垃圾收集。

让我用另一种方式来解释:垃圾收集可能很昂贵,所以你需要决定何时收集。为了避免不必要的工作,GC可能会记住收集运行后的内存量(例如,使用25MB)。现在,GC下次考虑收集时,首先决定是否值得做所有的工作。例如,如果现在使用的内存量是25.5MB,那么可能不值得做任何事情。但如果现在50MB正在使用,那么收集是有用的。

2) 这些东西起源于Mac,在那里GC是可用的。为了实现iOS和Mac OS X之间的代码共享,这些看似不必要的方法仍然存在于iOS上,以尽可能与Mac OS X保持兼容。我甚至怀疑这是因为iOS实际上是Mac OS X的"分支",因此继承了这些东西。

最新更新