【问题标题】:Maximum (practical) Memory Use on iPod Touch 4G, iOS 5iPod Touch 4G、iOS 5 上的最大(实际)内存使用量
【发布时间】:2012-03-17 01:16:45
【问题描述】:

我们有一个内存密集型 3D 应用程序,主要针对 iPad 2 和 iPhone 4S,但它也适用于 iPod Touch 4G 和 iPhone 3GS。我们发现 iPod Touch 4G 上较小的内存占用,再加上视网膜显示屏,使得该平台更容易出现内存不足错误。 iOS5 似乎也降低了可用内存。

根据我们使用的平台,降低 3D 模型的分辨率相对容易,但我们必须在加载之前设置该分辨率,因此我们无法根据来自操作系统。

我们根据反复试验调整了内存使用情况,但我们发现长时间(例如几个月)未重新启动的设备的可用内存比已重新启动的设备少得多最近。 (即使你杀死了所有正在运行的应用程序。)

我想知道其他 iOS 应用程序开发人员使用什么作为 iPod Touch 4G 应用程序的实际内存限制?

【问题讨论】:

  • 我不确定是否有有用的答案。在我看来,这在很大程度上取决于用户在使用您的应用之前或期间在设备上所做或使用的内容。不知道你会如何概括它。
  • 好吧,我宁愿我们的应用程序几乎永远不会崩溃,而且我认为其他在平台上拥有更多经验的应用程序开发人员可能已经知道这意味着“不要使用超过 X meg在 iPod touch 上”。但我一直无法找到那个答案。 (有一个 SO 问题暗示 70Meg,但我认为评论者只是在回应这个问题,并没有提供任何真正的见解。)
  • SO 刚刚提醒我这个老问题,我认为值得进行一些更新。事实证明,在所有情况下解决我们的记忆问题的关键是改用压缩纹理。实际上没有缺点:它们在运行时占用的内存更少,而且渲染速度更快。

标签: ios memory-management ios5 ipod-touch


【解决方案1】:

在牢记每个人都提供的所有警告的同时,我个人的一般经验法则是,在合理的天气下,您可以预期以下几点:

  • 512MB 设备 -> 200MB 可用空间(iPhone 4-4S、iPad 2)
  • 256MB 设备 -> 100MB 可用空间(iPhone 3GS、iPad、iPod Touch 3G-4G)
  • 128MB 设备 -> 50MB 可用空间(iPhone 3G、iPod Touch 1G-2G)

而且,如果您想严格承受不敏感的天气,而又不想灵活地响应内存使用,您可以将这些数字减半,甚至三分之二。但是,如果您在情况变得严峻时不能扔掉任何东西,那么保证 纯正的可靠性将是相当困难的。它更像是您愿意放弃多少性能以换取此时的可靠性。

在环境可预测性方面,iOS 更像是 PC,而不是专用机器,无论好坏,它还为操作系统增加了训练中士的优势。

【讨论】:

    【解决方案2】:

    最近我发现了这个很棒的工具来查找任何 iOS 设备的最大内存容量。我们还可以找到我们收到内存不足警告的内存级别。

    这里是链接:https://github.com/Split82/iOSMemoryBudgetTest

    【讨论】:

      【解决方案3】:

      由于操作系统代表您在 UIKit 和 OpenGL 中进行的所有外部分配,很难给出实际数字。我尝试将自己的分配保持在 30MB 左右,其中 50MB 是我的最高端。我把它推到了 90MB,但在那个级别我被抛弃了很多,所以这可能是个坏主意,除非使用所有内存的任务非常简短。

      如果您需要解决当前的问题,您可以提前检测有问题的设备,并在启动时降低图形引擎的分辨率。您可以获得准确的设备信息,或者您可以检查显示缩放比例(视网膜)以及处理器内核数量和 RAM 数量,以确定要使用的质量级别。

      通过使用映射文件代替将数据加载到 RAM 中,我在减少内存使用方面取得了巨大成功,如果您有任何大数据分配,您可能想尝试一下。

      还要注意从 UIKit 泄漏的视图/控件,因为它们会消耗大量内存并可能导致在看似随机的时间被丢弃。我有一些代码从几个视图控制器中泄露了子视图。最终,这些泄漏会破坏我的应用程序,尽管我的应用程序的内存使用并没有直接反映问题。

      【讨论】:

        猜你喜欢
        • 2012-02-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-05-27
        • 2021-12-04
        • 2013-05-03
        • 2012-05-02
        • 2011-08-31
        相关资源
        最近更新 更多