加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ios – XCODE工具分配增长

发布时间:2020-12-14 17:42:25 所属栏目:百科 来源:网络整理
导读:我在ios应用程序上运行uiautomation脚本.经过大约40次迭代: 在登录 一遍又一遍地敲几个按钮 然后退出 我到达这张图. 我的问题是关于分配图.它应该是这样的吗?我的脚本停止运行,我认为它是因为内存泄漏太多了?我知道泄漏的位置,并且它始终在同一个地方.但
我在ios应用程序上运行uiautomation脚本.经过大约40次迭代:

在登录
一遍又一遍地敲几个按钮
然后退出

我到达这张图.

我的问题是关于分配图.它应该是这样的吗?我的脚本停止运行,我认为它是因为内存泄漏太多了?我知道泄漏的位置,并且它始终在同一个地方.但是随着时间的推移,分配图应该是这样的吗?我假设在理想的记忆意识应用中它基本上保持0斜率.但这对我来说意味着,随着时间的推移,还有很多分配?

问题:图表应该是这样的吗?如果正确释放内存(非弧),我正在做的步骤应该保持一个倾斜的分配图/随着时间的推移?

解决方法

不,图表不应该是这样的.分配通常应该降低(除了缓存,甚至那些在内存压力下清除时应该回落).

但是,在你修复泄漏之前,没有必要担心分配问题.那可能会这样做.修复泄漏并重复上述练习,看看分配是否持平.如果没有,那么您可能还有其他问题.但修复泄漏可能会完全弥补这种情况.

此外,如果您还没有,请通过静态分析器运行该工具(Xcode“Product”菜单上的“Analyze”或按下shift命令B).特别是在MRC代码中,这将识别许多例行的内存管理问题.这就像魔术一样.在继续之前,请确保在那里获得清洁的健康状况.

然后使用“泄漏”工具精确定位泄漏的位置.然后,您可以诊断特定对象泄漏的原因.在继续之前修复泄漏.请参阅“仪器用户指南”的Finding Leaks部分.

完成所有这些后,您可以重复原始问题的过程,并查看分配是否继续增长(例如,可能是由保留周期引起的).如果您在修复上述漏洞后仍然遇到问题,那么工具中的技术可以识别增量分配的类型,然后您可以使用这些技术来追踪任何进一步的问题(如果有的话).

例如:

>运行分配工具,在分配工具中单击选项并拖动,然后您可以查看调用树,它将显示消耗内存的内容.有关示例,请参见this answer.
>运行分配工具.让应用程序安定下来到一个静止点.单击“标记堆”按钮.做一堆东西.回到你认为应该释放东西的地步.再次按“标记堆”.现在查看该堆快照并查看已分配但未在两个快照之间发布的对象,并且您应该能够诊断正在发生的事情.

但是所有这一切都没有实际意义,直到你修复泄漏,泄漏工具将比其他任何东西更有效地指出泄漏的对象.首先修复,然后看看你的位置.

有关更多信息,您可能会发现WWDC 2012 iOS App Performance: Memory视频中的一些讨论很有用(特别是在演示部分).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读