Xcode使用Profile的leaks检测内存泄露

在Xcode中提供了两种工具来优化程序:Analyze和Profile

Analyze是静态分析工具,通过Product→Analyze进行静态分析,不需要真机,在Xcode中只分析代码逻辑;

Profile是动态分析工具,这个工具叫“Instruments”,通过Product→Profile启动。

启动Profile需要在真机上进行,模拟器是不能真实的反馈出程序运行的一系列需要优化的地方。

Instruments有很多Trace Template(跟踪模板)可以动态分析和跟踪程序运行的时间、内存、CPU和文件系统等等。

如下图:


我们可以结合这两个工具来查找泄漏的代码,Analyze静态分析只是一个理论上的预测过程。先使用Analyze静态分析查找出可疑泄漏点,再用Profile动态分析中的Leaks和Allocations的跟踪模板进行动态跟踪分析,确认这些点是否泄漏,或者有新的泄漏出现等。

Instruments中虽然是选择了Leaks模板,但默认情况也会添加Allocations模板,基本上凡是分析内存都会使用 Allocations模板,它可以监控内存分布情况。


现在的开发环境是ARC,所以很少会出现内存泄漏的情况. 不过我们一定要养好码代码的规范性. 例如:使用通知,别忘了移除; 使用presentViewController弹出新的控制器,别忘了dismiss等等.

如果出现了内存泄露,一般是导入了c的第三方框架. 或者在项目中使用c的类创建了对象,没有手动释放该对象;例如Quartz2D绘图

使用步骤:

第一步:打开Xcode自带的Instruments

或者:

按上面操作,build成功后跳出Instruments工具,选择Leaks选项

选择之后界面如下图:

到这里之后,我们前期的准备工作做完啦,下面开始正式的测试!

1.选中Xcode先把程序(command + R)运行起来

2.再选中Xcode,按快捷键(command + control + i)运行起来,此时Leaks已经跑起来了

3.由于Leaks是动态监测,所以我们需要手动操作APP,一边操作,一边观察Leaks的变化,当出现红色叉时,就监测到了内存泄露,点击右上角的第二个,进行暂停检测(也可继续检测,当多个时暂停,一次处理了多个).如图所示:

4.下面就是定位修改了,此时选中有红色柱子的Leaks,下面有个"田"字方格,点开,选中Call Tree

显示如下图界面

5.下面就是最关键的一步,在这个界面的右下角有若干选框,选中Invert Call Tree 和Hide System Libraries,(红圈范围内)显示如下:

到这里就算基本完成啦,这里显示的就是内存泄露代码部分,那么现在还差一步:定位!

6.选中显示的若干条中的一条,双击,会自动跳到内存泄露代码处,如图所示

7.找到了内存泄露的地方,那么我们就可以修改即可。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值