Xcode之Instruments使用
打开Instruments:
或者
打开之后会看到如下界面
在这个界面上我们关注的主要有三个
Time Profiler:分析代码的执行时间,找出导致程序变慢的原因。要从xcode的product>profile中打开Instruments才能看到自己代码的运行时间分析Allocations:监测内存使用 / 分配情况 迅速膨胀的内存可以很快让程序毙命,所以要多加防范。Leaks:找到引发内存泄漏的起点当你进入一个UIViewController页面并返回的时候发现内存一直在增加,那可能会发生了内存泄露,可以试试看UIViewController的dealloc有没有运行,如果没运行可能就是发生了内存泄露。
具体上述三种各个效果作用可以参照博客: https://blog.leancloud.cn/2835/
下面主要说下 Leaks的使用:
这是打开之后选择自己的手机以及手机上正在运行的项目(1的旁边)
1、录控按钮。中间的红色按钮将停止与启动它被点击时,应用程序目前正在分析。注意这实际上是停止和启动应用程序,而不是暂停它。
2、行定时器和运行导航,定时器显示APP已经运行了多长时间,箭头之间是可以移动的。如果停止,然后使用录制按钮重新启动应用程序,这将开始一个新的运行。显示屏便会显示“run2 of 2”,你可以回到第一次运行的数据,首先你停止当前运行,然后按下左箭头回去。
3、运行轨道
4、详细地面板。它显示了你正在使用的仪器的主要信息,这是使用频率最高的部门
5、选项面板
Separate by Thread: 每个线程应该分开考虑。只有这样你才能揪出那些大量占用CPU的"重"线程
Invert Call Tree: 从上倒下跟踪堆栈,这意味着你看到的表中的方法,将已从第0帧开始取样,这通常你是想要的,只有这样你才能看到CPU中话费时间最深的方法.也就是说FuncA{FunB{FunC}} 勾选此项后堆栈以C->B-A 把调用层级最深的C显示在最外面
Hide System Libraries: 勾选此项你会显示你app的代码,这是非常有用的. 因为通常你只关心cpu花在自己代码上的时间不是系统上的
Flatten Recursion: 递归函数, 每个堆栈跟踪一个条目
定位红色柱子的Leaks,下面有个"田"字方格,点开,选中Call Tree,显示如下图界面:
下面就是最关键的一步,在这个界面的右下角有若干选框,选中Invert Call Tree 和Hide System Libraries,(红圈范围内)显示如下:
然后双击小人头像部分就能定位到咱们的项目代码中,如下图
如果没有出现小人头像部分,全是定位到地址符号,(也不要惊慌)这个时候设置下
选择第二个就行