【问题标题】:Allocation for app on iPad 1 is 4x that of iPad 2iPad 1 上的应用程序分配是 iPad 2 的 4 倍
【发布时间】:2012-07-22 00:19:00
【问题描述】:

当我在 iPad 2 上分析我的应用时,它加载时分配的内存不到 1MB。当我在 iPad 1 上执行相同操作时,它加载时分配了大约 4MB。两者都更新到相同的 iOS 版本。这是正常行为吗?如果是这样,我能做些什么吗?

【问题讨论】:

  • 听起来很奇怪,您的应用程序是否使用任何浮点代码/矩阵等?
  • 应用第一次加载时不会,之后很少。
  • 所以更大数量的寄存器出来了。在一天结束时,仅分配内存,其中大部分可能不会被积极使用。所以应该没什么区别。
  • 尝试从项目中删除图像/媒体并查看内存。也许 iPad 1 使用 @2x 图像而 iPad 2 使用 1x 图像?这可以解释 4 倍的内存使用量,但情况似乎不太可能。
  • @Ninja 那是不可能的。只有新 iPad 有视网膜显示屏。

标签: ios memory profiling


【解决方案1】:

我要调查的一种可能性是应用程序存储其资源的位置。 iPad2 无疑具有更多用于纹理、声音 ram 等的 vram,因此它可能会将这些资源存储在硬件上,而 iPad1 则必须将它们存储在主机内存中并根据需要上传它们。一个快速的测试方法是对你的资源进行下采样,看看它对 iPad1 的影响是否比对 iPad2 的影响更大,如果是,那么这是一个合理的解释。

例如,如果您有 8MB 的图形,而 iPad1 有 4MB vram 可用于纹理,而 iPad2 有 7MB 可用,那么 iPad1 会将 4MB 纹理存储在 vram 中,而将另外 4MB 留在主机 ram 中,而iPad2 会将 7MB 的纹理存储在 vram 中,而将另外 1MB 保留在主机 ram 中。

【讨论】:

    【解决方案2】:

    是的,这是一种正常的行为。这也取决于设备类型。例如,如果您分析 3G、3GS、4、4S 手机中的内存,您会得到不同的结果。这应该不是问题,除非它随着应用程序的使用而频繁增长。你用的是什么操作系统?您是否启用了 ARC?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-09-14
      • 2015-02-14
      • 2012-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多