我必须立即处理大量数据。因此我使用Blocks或NSOperationQueue。 一切正常,直到要处理的数据量超过内存限制。 这会导致应用程序即时崩溃。
原因是我必须处理的数据包大约是。 100KB大。 超过300-400个此操作在队列中排队后,将超出内存限制。
现在我想知道你们如何处理类似的问题? BTW:我没有找到限制队列大小的方法,除非我添加同步任务,这将导致堆栈在返回之前完成。
提前感谢任何提示。
答案 0 :(得分:1)
NSOperation 大致相当于ThreadPoolExecutor。所以你已经在使用它了。如果你的内存耗尽,你的并发方法可能不是问题。
听起来你正在构建300-400个任务(NSOperations,或GCD块),并且在执行之前耗尽内存。为什么不在添加它们时执行它们?这就是NSOperationQueue和GCD队列 for ,就像ThreadPoolExecutor一样。