作为一名iOS开发攻城狮,在苹果没有出ARC(自动内存管理机制)时,我们几乎有一半的开发时间都耗费在这么管理内存上.后来苹果很人性的出了ARC,虽然在很大程度上,帮助我们开发者节省了精力和时间.但是我们在开发过程中,由于种种原因,还是会出现内存泄露的问题.内存泄露是一个很严重的问题.下面就简单介绍下怎么使用Xcode7自带的Instruments中的Leaks检测我们的程序有没有内存泄露和定位内存泄露的代码.(分析内存泄露不能把所有的内存泄露查出来,有的内存泄露是在运行时,用户操作时才产生的)

第一步:打开Xcode7自带的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.找到了内存泄露的地方,那么我们就可以修改即可

8.xcode9中,第6步稍微有些不一样

最新文章

  1. MyBatis学习(四)MyBatis和Spring整合
  2. moq 的常用使用方法
  3. Unity热门插件推荐
  4. 手写PHP AJAX数据脚本
  5. 【leetcode】Remove Duplicates from Sorted Array
  6. httpclient爬取性感美图
  7. HTML初讲
  8. Unity3d插件iTween的使用
  9. AC Me
  10. Django(九)下:Ajax操作、图片验证码、KindEditor使用
  11. [POJ3630]Phone List (Tire)
  12. Fortran与C/C++混合编程示例
  13. MyBatis笔记----报错Exception in thread "main" org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ij34.model.UserMapper.selectUser
  14. 『TensorFlow』数据读取类_data.Dataset
  15. 搭建mxnet-gpu docker的pyhon remote kernel
  16. YOCVM
  17. Web App 和 Native App,哪个是趋势?
  18. mac上配置mysql与redis server,并结合Pydev准备某爬虫环境
  19. java资源文件解读
  20. C# Log4net根据日志等级输出到不同文件

热门文章

  1. jfinal excel表导出
  2. C#Aspose操作Word & Excel简版(后会研究补充更多功能)
  3. 使用git stash命令保存和恢复进度
  4. popen和pclose详解及实例
  5. 解决cmd目录下pip命令不存在的问题
  6. 一个batch的数据如何做反向传播
  7. P1880 [NOI1995]石子合并【区间DP】
  8. Kubespray部署Kubernetes 1.13.0(使用本地镜像仓库)
  9. Android 完美解决bundle实现页面跳转并保留之前数据+传值
  10. [原]sencha touch之NavigationView