首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >iOS:检查iPad上内存的使用情况

iOS:检查iPad上内存的使用情况
EN

Stack Exchange QA用户
提问于 2016-08-10 02:45:45
回答 1查看 2.7K关注 0票数 4

目前我正在iPad上测试一个移动应用程序。

问题是:

我注意到我运行这个应用程序的时间越长,它的运行速度就越慢,最终它就会崩溃。

我怀疑代码中的某个地方有内存泄漏。

我的问题是

如何证明此iOS移动应用程序存在内存泄漏?

我试过了:

General --> Usage,但它没有显示它正在使用多少内存。

EN

回答 1

Stack Exchange QA用户

回答已采纳

发布于 2016-08-10 07:03:27

根据苹果网站上的开发人员文档:

以下场景是泄漏的常见原因,您可以确认您的观察结果是否实际上是内存泄漏??

  • 在对象不再被引用时,在没有相应的发布调用的情况下,对对象调用Retain。
  • 一个对象已被分配并使用API初始化,这些API不会导致对象自动释放。
  • 如果泄漏不是一个对象,那么您可能正在调用一个假定由malloc创建的内存块所有权的API,并且您缺少了对free()的相应调用。

使用反向跟踪:

调查泄漏的对象:

  1. 单击“时间线”窗格中的“泄漏工具”,在“详细信息”窗格中显示与泄漏相关的信息。
  2. 从详细信息窗格的导航栏中的详细类型列表中选择泄漏。
  3. 将显示回溯所泄漏对象的列表。
  4. Backtrace视图的泄漏通过其分配点聚合所有泄漏的块,因为源代码中的一个错误可能导致多个运行时泄漏,因为代码被重复执行。
  5. 选择要调查的对象。单击对象内存地址旁边的焦点箭头,在detail窗格中显示对象的内存历史记录,以及相应的引用计数和方法调用。
  6. 按命令-3在检查器的扩展详细区域中显示所选对象的堆栈跟踪。
  7. 单击扩展详细信息区域中的折叠按钮,以隐藏堆栈跟踪中的系统调用。这使得定位应用程序的方法变得更加容易。
  8. 双击堆栈跟踪中的方法以在仪器中显示其代码.
  9. 单击详细信息窗格顶部的Xcode按钮,打开Xcode中的代码以进行检查和编辑。

使用调用树:

调查漏洞:

  1. 单击“时间线”窗格中的“泄漏工具”,在“详细信息”窗格中显示与泄漏相关的信息。从详细信息窗格的导航栏中的详细类型列表中选择Call Tree。
  2. 将显示与任何检测到的泄漏相关的方法调用列表。按命令-2在检查窗格中显示显示设置区域。在“调用树”显示设置下,选择“反向调用树”并隐藏系统库。
  3. 首先显示了最近的方法调用。它还有助于缩小对应用程序所做方法调用的列表。您的应用程序进行的方法调用是黑色的,前面有一个用户代码图标。
  4. 选择要调查的方法调用。
  5. 按命令-3在检查器的扩展详细区域中显示所选方法调用的堆栈跟踪。双击堆栈跟踪中的方法调用,在仪器中显示其代码.
  6. 单击详细信息窗格顶部的Xcode按钮,打开Xcode中的代码以进行检查和编辑。

您可以细化更多细节,这里

其他解决方案:

  • 使用仪器:首先在模拟器上构建并安装应用程序。
  • 再次停止这个过程(红色盾牌在上面写着“任务”),然后转到运行->使用性能工具运行->泄漏。
  • 这将启动使用泄漏和内存分配工具预先配置的仪器。要获得更多信息,请查看苹果的内存使用性能指南(该指南还有一个关于查找泄漏的部分):http://developer.apple.com/library/ios/#documentation/Performance/Conceptual/ManagingMemory/ManagingMemory.html
票数 2
EN
页面原文内容由Stack Exchange QA提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://sqa.stackexchange.com/questions/21974

复制
相关文章

相似问题

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