Instruments使用技巧

来源:互联网 发布:unity3d转场效果 编辑:程序博客网 时间:2024/05/29 07:38

在MRC的黑暗时代 ,内存管理真的是费废掉大半时间 来解决内存问题,还好我停留在Mrc的年代寥寥无几;ARC出来以后,镇时代了了太多的方便, 但是不代表就没有内存泄露这种事情发生,最近接到了一个项目,发现内存超鸡大,我就检测了一下,发现好多内存泄露,那么接下来我们介绍一下如何 用工具定为内存泄露;
接下来介绍一下Leaks 的用法:https://developer.apple.com/library/prerelease/content/documentation/DeveloperTools/Conceptual/InstrumentsUserGuide/ProfilingTemplates.html#//apple_ref/doc/uid/TP40004652-CH19-SW5(官方使用文档)
第一步 :打开方式1:这里写图片描述
然后选择
这里写图片描述
打开方式2:cmd+ control + I ;
第二步:把你所要检测的工程运行起来 cmd +R ;
第三步:选中xcode 然后 cmd+ control + I ,选择确定,然后leaks就已经开始在运作了;
第四步
这里写图片描述
如红色箭头处,这种红色X的地方就是内存泄露的地方;
第五步:接下来 就可以进行 内存泄露定位工作了,首先我们得找到 上图 有个“田”样式的图案 把那个Statictics 改成 Call Trees 你就可以看到 其右侧有一个“齿轮形状”的设置按钮,
这里写图片描述
Separate By Thread:线程分离,只有这样才能在调用路径中能够清晰看到占用CPU最大的线程.

Invert Call Tree:从上到下跟踪堆栈信息.这个选项可以快捷的看到方法调用路径最深方法占用CPU耗时,比如FuncA{FunB{FunC}},勾选后堆栈以C->B->A把调用层级最深的C显示最外面.

Hide Missing Symbols:如果dSYM无法找到你的APP或者调用系统框架的话,那么表中将看到调用方法名只能看到16进制的数值,勾选这个选项则可以隐藏这些符号,便于简化分析数据.

Hide System Libraries:这个就更有用了,勾选后耗时调用路径只会显示app耗时的代码,性能分析普遍我们都比较关系自己代码的耗时而不是系统的.基本是必选项.注意有些代码耗时也会纳入系统层级,可以进行勾选前后前后对执行路径进行比对会非常有用.

一般选中我所打箭头的两个 就可以清晰地看到,内存泄露的定位
这里写图片描述
既然找到了位置 ,能不能改好,就看你咯;我们今天就讲一个功能的用法;

0 0
原创粉丝点击