NSThread和主线程有相同的内存权限吗?



我使用NSOperationQueue来管理iOS应用程序的一个阶段,这是相当长的,所以我想异步管理它。在那个阶段,我直接使用calloc函数在C中分配大数组。这里的"大"指的是1024x256的浮点数和类似的东西的二维数组。

如果一切都驻留在主线程上,而不是应用程序在计算时锁定,但一切都很好,如果,相反,我将重的部分移动到NSInvocationOperation然后我得到了许多奇怪的结果,调试器有时我会在控制台收到一个奇怪的消息,说明

程序现在没有可用的内存:调用malloc不安全

所以我想知道由操作队列管理的线程是否与主线程相比有一些不同的限制,如果有什么更好的办法来解决这个问题

据我所知没有任何限制。但是,您可能会触及可用RAM的边缘。由于iOS不支持虚拟内存,所以当内存不足时,它会向其他应用发送警告以释放内存。这可能是你问题的根源。

使用仪器来分析您正在使用多少RAM。如果它超过大约20MB左右,那么由于内存使用过多,您可能有被终止的危险。

相关内容

  • 没有找到相关文章

最新更新