我已经在MonoTouch中构建了一个应用程序 - 它同时适用于arm6和arm7设备,我试着尽可能小心地使用我的内存,并且在arm7设备上它运行得非常漂亮 - 通过苹果乐器程序运行它我可以在分配工具中看到大约4MB的平均“活字节”。
然而,在arm6设备(iPhone 3G,iPod touch 2nd Gen)上 - 显示内存使用量大约为22MB - 频繁出现低内存警告,显然最终崩溃。
是否有任何构建设置或任何人可以想到的特定事情可能导致应用程序在3G设备上与3GS(arm7)设备相比具有如此高的内存占用量? 特别令人沮丧的是,这些设备仍有足够的内存。
感谢您的时间,
利安
答案 0 :(得分:1)
这是巨大的差异!
我的最佳猜测是Apple的仪器误报正在使用的内存(无论是两种情况还是两种情况),事实上,真实>强>两者的记忆要求都更接近。
在这种情况下,较旧的 armv6 设备具有较少的RAM,并且会在较新的 armv7 设备(具有更多RAM)之前提供低内存警告。 IOW你看到可能正常的行为,即你可能接近旧设备的限制。
现在它也可能是bug或其他一些配置在您的版本之间有所不同(例如调试与发布版本)。如果您可以与我们分享(或创建测试用例)(Xamarin),那么我们可以尝试重现该问题。
注意:
我假设你在谈论在不同设备上使用的单个 armv6 应用程序。但即使你使用了不同的版本(一个用于 arm6 ,另一个用于 armv7 或胖应用程序),这只会影响本机代码的生成。因此它会影响二进制大小,但不应该对应用程序的运行时内存需求产生(巨大的)影响。