大型NSData的内存问题

时间:2013-08-06 08:51:03

标签: ios objective-c nsthread

我正在主线程上读取一个非常大的文件到内存中(不仅仅是简单的dataWithContentsOfFile:方法,我还做了一些数据操作),我的应用程序崩溃了。在将此过程移至后台线程后,应用程序不再崩溃。唯一发生的事情是NSData我得到的是nil

是否可能只有我的后台线程被中断而不影响主线程,或者我错过了什么?此外,我可以依靠此行为,并在NSDatanil时显示错误消息,而不会让应用崩溃吗?提前谢谢。

修改

我得到的日志是:

malloc: * mmap(size = 629800960)失败(错误代码= 12) 错误:无法分配区域 * *在malloc_error_break中设置断点以进行调试

我使用的文件大约250 MB。

我知道为什么它在主线程上崩溃了。我的问题是,为什么它不会在辅助线程上崩溃?

1 个答案:

答案 0 :(得分:0)

我想它可能取决于崩溃,但如果是内存不足的问题(你可以使用太多内存或创建太多对象),它将会崩溃整个应用程序。

您应该尝试使用较小的文件测试应用程序并查看其行为。