iam*_*mer 3 memory-management grand-central-dispatch
例如,如果您创建自己的GCD队列:
self.renderQueue = dispatch_queue_create("com.test.queue", DISPATCH_QUEUE_SERIAL);
Run Code Online (Sandbox Code Playgroud)
您是否必须在提交到该队列的每个块中创建自动释放池,使用:
@autoreleasepool {
}
Run Code Online (Sandbox Code Playgroud)
?
或者ARC是否为您创建了它?如果您未在自定义队列中指定autoreleasepool,会发生什么?
这取决于您对自动释放对象的使用.
每个GCD线程都有一个最外面的自动释放池,但是这个池在你无法直接控制的时候被耗尽(当前线程在线程变为空闲时就会消失,就在它自己停留在等待重用或收获的内核之前).
如果您的进程长时间保持GCD线程处于活动状态和/或在块中创建大量自动释放对象(或非常大的自动释放对象),您可能希望在块中创建池以确保占用资源通过这些对象提前释放.
归档时间: |
|
查看次数: |
722 次 |
最近记录: |