【问题标题】:What memory usage threshold when I receive memory warning in iOS当我在 iOS 中收到内存警告时,内存使用阈值是多少
【发布时间】:2012-10-06 08:16:15
【问题描述】:

我确实在我的 iOS 应用中收到了这些警告

Received memory warning. Level=1
Received memory warning. Level=2

问题是,在 Level=2 警告之后,我的应用程序将被杀死... 在收到此类警告之前,我的应用程序可以使用多少 MB 内存?在我的应用因 2 级内存警告而被杀死之前,我在 XCode Instruments 中获得了

我正在使用 iPod Touch 第 4 代和 iPhone 4 进行测试,并且至少针对这些设备。

感谢任何建议,并在此先感谢!

【问题讨论】:

  • Skyler Saleh 在此处提供了 iOS 应用程序“可接受的”RAM 使用情况的可靠详细信息:stackoverflow.com/questions/6044147/…
  • TODO:尝试不同的仪器,正在使用“内存分配”仪器,但一位同事在他的 xcode 仪器上运行良好,100+ Mb。我很确定我们的应用在运行时使用的任何时候都超过 30Mb

标签: ios memory didreceivememorywarning


【解决方案1】:

首先,我会问自己,您将什么加载到占用这么多空间的内存中。其次,如果您以正确的方式释放所有内容。 ARC 简化了我们的生活,但它不是垃圾收集器,可能存在废弃内存和其他导致内存增长的问题。在 iphone 3gs 中,内存限制约为 25MB,当您达到该限制时,您会收到内存警告,如果您的应用程序无法刷新一些内存,它将关闭。

【讨论】:

  • “首先我会问自己,你在把什么加载到占用这么多空间的内存中。” - 这确实是最好的建议,因为您无法控制有多少内存可供您使用(操作系统根据可用性决定)。您所能做的就是 a) 使用尽可能少的内存 b) 对第一个内存警告做出适当的响应。
  • 我只是加载渲染场景所需的所有纹理。一个未压缩的纹理已经使用了 4Mb 的 RAM (1024x1024x32Bit)。它在 3GS 上运行并且仍然在 3GS 上运行,所以我很确定上限不是 30Mb。稍后我会再次尝试配置文件。感谢您的意见!
【解决方案2】:

如果您想支持 iPhone 3GS 等旧设备,我建议不要超过 12-15MB。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-01
    • 2011-04-30
    • 1970-01-01
    相关资源
    最近更新 更多