1

我在 MonoTouch 中构建了一个应用程序 - 它适用于 arm6 和 arm7 设备,我尝试尽可能小心地使用内存,并且在 arm7 设备上它运行良好 - 通过我可以看到的苹果仪器程序运行它分配工具中的平均“活动字节”约为 4MB。

然而,在 arm6 设备(iPhone 3G、iPod touch 2nd Gen)上——它显示的内存使用量约为 22MB——频繁地发出低内存警告,显然最终崩溃。

是否有任何构建设置或任何任何人都可以想到的特定事情可能导致应用程序在 3G 设备与 3GS (arm7) 设备上具有如此高的内存占用?这尤其令人沮丧,因为这些设备无论如何都有足够的内存。

谢谢你的时间,

利亚姆

4

1 回答 1

1

这是一个巨大的差异!

最好的猜测是,Apple 的 Instruments错误地报告了正在使用的内存(在任何一种情况下或两种情况下),事实上,两者的实际内存需求更接近。

在这种情况下,较旧的armv6设备的 RAM 较少,并且会在较新的armv7设备(具有更多 RAM)之前发出内存不足警告。IOW 您看到的行为可能是正常的,即您可能接近旧设备的限制。

现在它也可能是你的构建之间不同的错误或其他一些配置(例如,调试发布构建)。如果您可以与我们(Xamarin)共享(或创建测试用例)这将很有帮助,以便我们可以尝试重现该问题。

注意

我假设您正在谈论在不同设备上使用的单个armv6应用程序。但即使您使用不同的构建(一个用于arm6,一个用于armv7应用程序),这也只会影响本机代码生成。因此,它会影响二进制大小,但不会对应用程序的运行时内存需求产生(巨大)影响。

于 2012-02-01T18:26:53.447 回答