logo头像

小玉的技术博客

iOS性能调试之instruments

关于instruments

Instruments是功能强大且灵活的性能分析和测试工具,是Xcode工具集的一部分,它旨在帮助您分析您的iOS,watchOS,tvOS和macOS应用程序,流程和设备,以便更好地了解和优化应用程序的行为和性能。从应用程序开发过程开始,将仪器集成到您的工作流程中,可以帮助您在开发周期的早期发现问题,从而节省您的时间。
在Instruments中,您使用专用工具(称为工具)来跟踪应用程序,流程和设备的不同方面。仪器在配置文件时收集数据,并将结果详细呈现给您以供分析。
与其他性能和调试工具不同,Instruments允许您收集广泛不同类型的数据并并排查看。这样可以更轻松地识别可能被忽视的趋势。例如,您的应用可能会因多个开放式网络连接而出现大量内存增长。通过一起使用分配和连接工具,您可以识别未关闭的连接,从而实现快速的内存增长。

使用 Instruments 你可以做下面这些事:

  1. 检查一个或多个应用或进程的行为。
  2. 检查设备相关的功能,比如:Wi-Fi、蓝牙等。
  3. 在真机或模拟器上进行性能测试。
  4. 创建自定义的 DTrace 来分析系统以及应用的各种行为。
  5. 跟踪源码中的问题。
  6. 对 App 进行性能分析。
  7. 查找 App 中的内存问题,比如:内存泄露(Leaked memory)、废弃内存(Abandoned memory)、僵尸(zombies)等。
  8. 给出程序优化的建议。
  9. 进行系统级别的问题定位。
  10. 通过脚本记录一个用户行为序列,从而可以通过运行脚本对你的 iOS 应用进行可重复多次的自动化测试。
  11. 保存测试配置模板以供复用。
    虽然 Instruments 是 Xcode 的一个工具集,但是它是以一个独立的 App 的形式存在的,你可以在 Xcode -> Open Developer Tool -> Instruments 中打开它。

    内存性能

    Instruments 可以帮我们了解到应用程序使用内存的几个方面:
  • 全局内存使用情况(Overall Memory Use): 从全局的角度监测应用程序的内存使用情况,捕捉非预期的或大幅度的内存增长。
  • 内存泄露(Leaked memory): 未被你的程序引用,同时也不能被使用或释放的内存。
  • 废弃内存(Abandoned memory): 被你的程序引用,但是没什么卵用的内存。
  • 僵尸对象(Zombies): 僵尸对象指的是对应的内存已经被释放并且不再会使用到,但是你的程序却在某处依然有指向它的引用。在 iOS 中有一个 NSZombie 机制,这个是为了内存调试的目的而设计的一种机制。在这个机制下,当你 NSZombieEnabled 为 YES 时,当一个对应的引用计数减为 0 时,这个对象不会被释放,当这个对象再收到任何消息时,它会记录一条 warning,而不是直接崩溃,以方便我们进行程序调试。

这里我们介绍下查找内存泄露的过程:
1.在products->profile中启动instruments面板

2.选中Leaks模板

  1. 选择正确的设备和应用程序,点击红色按钮运行应用程序

    4.我们可以看到如下界面

参考

支付宝打赏 微信打赏

赞赏是不耍流氓的鼓励