2

我必须一次处理大量数据。因此我使用 Blocks 或 NSOperationQueue。一切正常,直到要处理的数据量超过内存限制。这会导致即时应用程序崩溃。

原因是我必须处理的数据包大约是。100KB 大。在超过 300-400 个此操作在队列中排队后,内存限制已超出。

现在我想知道你们如何处理类似的问题?顺便说一句:我没有找到限制队列大小的方法,除非我添加同步任务,这将导致堆栈在返回之前完成。

提前感谢您的任何提示。

4

1 回答 1

1

NSOperation大致相当于 ThreadPoolExecutor。所以你已经在使用它了。如果你正在耗尽你的内存,你的并发方法可能不是问题。

听起来您正在构建 300-400 个任务(NSOperations 或 GCD 块)并在执行它们之前耗尽内存。为什么不让它们在您添加它们时执行?这就是 NSOperationQueue 和 GCD 队列的用途,很像 ThreadPoolExecutor。

于 2012-06-13T09:20:06.480 回答