首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >基于剖面法的仪器异地数据获取

基于剖面法的仪器异地数据获取
EN

Stack Overflow用户
提问于 2017-04-13 09:24:52
回答 1查看 451关注 0票数 1

这个问题是对以下问题的后续问题:instruments-leaks-and-allocations-tvos

最初的问题与我在tvOS应用程序中的内存泄漏有关,但我认为这个问题的答案一般与iOS/Xcode/tvOS的开发有关。

通过删除另一个闭包中的闭包,在第一个闭包中保留对变量的引用,解决了这个问题。这导致了一个保留周期。

问题

让我解释一下,我真的很想明白为什么我没有早点发现这个问题。

结果,我用错了仪器。分析时我的工作流程如下:

  • 在Xcode中,我在Apple设备上运行了这个应用程序
  • 启动仪器
  • 将仪器附加到已启动的应用程序

以下内容可在文书中看到:

有一些漏洞,但没什么特别之处。图表并没有真正增加,甚至一个小时后也没有增加。我用了很长一段时间,从来没有想过这里会有什么问题。

在阅读有关泄漏、分析等的文章时,我偶然看到一些文章,其中有人在使用Xcode中的Profile按钮(而不是Run)。我只是认为这和我所做的一样:运行应用程序,启动仪器和附加进程。但是,神奇的是,这个图表出现了:

显然,这里存在内存泄漏,使用这些数据,查找泄漏非常容易。

所以我真的想知道这两种方法的区别是什么,但我不能从中得到任何东西。任何人:)?

PS:截图是用完全相同的代码库在对方两分钟后拍摄的,只是将仪器连接到这个过程的另一种方式。

EN

回答 1

Stack Overflow用户

发布于 2017-04-13 18:21:07

这两种方法的不同之处在于,当您从Xcode中选择Profile时,仪器从一开始就记录所有内存分配。当您在Xcode中运行应用程序、启动工具和附加应用程序时,您将错过将应用程序附加到仪器之前发生的所有内存分配。从Xcode中选择配置文件是更好的选择,如果您想记录应用程序的每一个内存分配,因为它是从应用程序启动开始记录的。

要回答您的问题,为什么当您选择Xcode中的Run和Profile时,仪器拥有不同的数据,我怀疑这是因为它们运行的是不同的应用程序构建。Xcode最初被设置为在选择在Xcode中运行时使用Debug构建配置,并在选择Profile时设置为使用发行版构建配置。仪器可以显示调试和发布版本的不同内存使用情况。您可以编辑您的方案以查看用于运行和分析的生成配置。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43388395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档