iOS -调试工具Instruments使用总结

iOS -调试工具Instruments使用总结
一、instruments介绍

灵活、强大的工具,可以做性能分析、代码追踪、检查内存泄露等。

二、使用

1、打开方式

Xcode -> Open Developer Tool -> Instruments

2、常用模块

Allocations:用来检查内存分配,跟踪过程的匿名虚拟内存和堆的对象提供类名和可选保留/释放历史
Leaks:一般的查看内存使用情况,检查泄漏的内存,并提供了所有活动的分配和泄漏模块的类对象分配统计信息以及内存地址历史记录
Time Profiler:分析代码的执行时间,执行对系统的CPU上运行的进程低负载时间为基础采样
Zombies:检查是否访问了僵尸对象

3、Allocations(分配)

简单来说就是不断的重复某一个场景,查看内存增量,一般情况下,100K以下都属于正常范围。

4、Leaks(内存泄露)

运行工程,点击要测试的页面
观察红叉,点击暂停,点击红叉
底部切换成Call Tree,查看相关代码
限制Call Tree展示,打上右边的勾,Hide Sys
展开底部列表,找到相关代码
5、Time Profiler (时间分析)

真机调试
最好使用Release环境配置,接近线上
主要看Call Tree 和 Sample List 两种视图
Running Time:函数运行的时间,这个时间是累积时间
Self:在栈顶次数
Symbol Name:被调用函数的符号信息
查看时间异常的列表,展开后定位相关代码位置

6、Zombies (僵尸对象)

概念:过度释放的对象,对同一个对象释放了多次;
当引用计数降到0时,对象占用的内存已经被释放掉,此时指向原对象的指针就成了“悬垂指针”,如若再对其进行任何方法的调用,(原则上)都会直接crash(然而由于某些特殊的情况,不会马上crash)。过度释放简单的说就是对release的对象再release,就是过度释放。

相关概念:内存泄漏:对象使用完没有释放,导致内存浪费。野指针:指向僵尸对象(不可用内存)的指针。给野指针发消息会报EXC_BAD_ACCECC错误。空指针:没有指向储存空间的指针(里面存的是nil,也就是0)。在oc中使用空指针调中方法不会报错。
使用:在Launch Configuration中勾选Record reference counts和Enable NSZombie detection。其中Recordreference counts是显示引用计数,Enable NSZombie detection是能够检测僵尸对象。这样在程序运行的时候,如果发现僵尸对象它就会弹出一个对话框,点击其中“→”按钮,在屏幕的下方会显示僵尸对象的详细信息,下图可以看到僵尸对象的引用计数变化情况。

posted @   R-Bear  阅读(2272)  评论(0编辑  收藏  举报
(评论功能已被禁用)
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
历史上的今天:
2017-07-17 心情
2017-07-17 http接口测试框架-遇到的问题
2017-07-17 http接口测试框架-构想图
2017-07-17 http接口测试框架-python
点击右上角即可分享
微信分享提示