【问题标题】:arm6 devices showing much higher memory usagearm6 设备的内存使用率更高
【发布时间】:2012-02-24 09:55:45
【问题描述】:

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

但在 arm6 设备(iPhone 3G、iPod touch 2nd Gen)上 - 它显示内存使用量约为 22MB - 经常发出低内存警告并最终崩溃。

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

感谢您的宝贵时间,

利亚姆

【问题讨论】:

    标签: ios memory xamarin.ios instruments armv7


    【解决方案1】:

    这是一个巨大的差异!

    我的最佳猜测是 Apple 的 Instruments 误报正在使用的内存(在任何一种情况下或两种情况下),而事实上,真实 strong> 两者的内存要求更接近。

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

    现在它也可以是 bug 或其他在您的构建中不同的配置(例如 DebugRelease 构建)。如果您可以与我们 (Xamarin) 共享(或创建测试用例)这将很有帮助,以便我们可以尝试重现该问题。

    注意

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

    【讨论】:

    • 感谢您抽出宝贵时间回复 - 我创建了一个胖应用程序(使用 LLVM)和一个 Arm6 版本。两者都是发布版本。我想知道第三方库(Sparrow)是否会产生影响?我必须编译和 Lipo 一个胖二进制版本才能使 LLVM 工作,以及一个仅 arm6 的版本才能使标准单声道编译器工作,但我不确定框架本身是否以不同的方式管理旧设备的内存。与此同时,我将尝试完成一些测试并发布一些结果截图。
    猜你喜欢
    • 2011-09-19
    • 2018-07-01
    • 1970-01-01
    • 2012-05-31
    • 1970-01-01
    • 2011-03-31
    • 1970-01-01
    • 2016-07-07
    • 2012-07-02
    相关资源
    最近更新 更多