【问题标题】:Do NSThread have same memory privileges as main thread?NSThread 是否具有与主线程相同的内存权限?
【发布时间】:2011-07-08 23:40:48
【问题描述】:

我正在使用NSOperationQueue 管理一个相当长的iOS 应用程序阶段,因此我想异步管理它。在那个阶段,我通过直接使用 calloc 函数在 C 中分配大数组。 大我的意思是一个 1024x256 的二维浮点数组和类似的东西。

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

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

所以我想知道由操作队列管理的线程与主线程相比是否有一些不同的限制,以及如何更好地解决这个问题。

【问题讨论】:

    标签: ios multithreading malloc calloc


    【解决方案1】:

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

    使用工具来分析您正在使用多少 RAM。如果它超过大约 20MB 左右,那么您可能会因为内存使用过多而面临被终止的危险。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-12-10
      • 1970-01-01
      • 2022-01-09
      • 1970-01-01
      • 2013-02-23
      • 2021-04-06
      • 2017-05-24
      相关资源
      最近更新 更多