gpt4 book ai didi

iphone - 使用 Instruments 分析内存泄漏 - iPhone 4 和 iOS 5 模拟器之间的巨大差异

转载 作者:技术小花猫 更新时间:2023-10-29 11:16:29 26 4
gpt4 key购买 nike

当使用 Instruments 分析我的应用程序(寻找内存泄漏)时,我使用 iOS 5 iPhone 模拟器得到的结果与我使用运行 iOS 5 的 iPhone 4 得到的结果截然不同。第一张图片显示了使用真实设备,第二个是模拟器:

真实设备:

Real device


iOS 5 模拟器:

Simulator

在这两种情况下,此配置文件在应用程序中采用相同的点:在 rootViewController 的 View 生命周期中完成 viewDidLoad。我已经在他们两个中等待分配的总内存稳定下来。正如您在设备图表中看到的那样,在 00:10 左右出现了一些极端波动,这在模拟器中是不存在的。在真实设备上,总分配内存在 00:08 左右从 1MB 跃升至 3.5MB,然后回落至 1.5MB,最后跃升至 4.74,并稳定下来。为模拟器分配的内存更加线性,稳定且快速地攀升至 2.35 MB 左右并稳定下来。

另一件需要注意的事情是设备上存在 2.25 MB 的分配内存,但不是来自 malloc 的模拟器和来自 CFNumber 的 700+ KB。由于我对使用 Instruments 和分析比较陌生,所以我不确定这是否正常。快速谷歌搜索没有找到任何确定的信息。这 2.25 MB 和 700 KB 弥补了内存分配的差异。为了平衡事物,在模拟器测试中存在更多具有不同内存量的 malloc 条目,但在设备测试中不存在。

此外,我发现当第二个 UIViewController 被插入 UINavigationController 堆栈时,分配的内存在真实设备上跳到大约 8.5-9 MB,但只有大约 4.5 到 4.5 兆字节 tops模拟器。

我知道该设备的性能与模拟器有很大不同是可以预料的,但是内存分配不应该非常相似,因为在两个设备上运行的是相同的代码吗?如果这是性能分析,我会理解,但对于内存分配,数字似乎应该非常相似。谁能说明这是否正常?

最佳答案

这种行为是意料之中的。从技术上讲,当您使用模拟器运行分析时,您是在测量基于桌面硬件的统计数据。即使您只是分析分配情况,您也不能指望它们会以类似的方式工作,因为很多软件优化/算法等都是基于其运行的硬件。

很遗憾,Apple 没有 iOS 模拟器。不过,您最好使用设备进行分析,因为模拟器往往仍然不可靠且速度慢(例如 Android 模拟器)。

关于iphone - 使用 Instruments 分析内存泄漏 - iPhone 4 和 iOS 5 模拟器之间的巨大差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8468662/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com