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是能够检测僵⼫对象。这样在程序运⾏的时候,如果发现僵⼫对象它就会弹出⼀个对话框,点击其中“→”按钮,在屏幕的下⽅会显⽰僵⼫对象的详细信息,下图可以看到僵⼫对象的引⽤计数变化情况。
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- efsc.cn 版权所有 赣ICP备2024042792号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务