(转载--修改)使用Xcode9的Instruments检测解决iOS内存泄露
2024-09-29 05:13:32
作为一名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步稍微有些不一样
最新文章
- MyBatis学习(四)MyBatis和Spring整合
- moq 的常用使用方法
- Unity热门插件推荐
- 手写PHP AJAX数据脚本
- 【leetcode】Remove Duplicates from Sorted Array
- httpclient爬取性感美图
- HTML初讲
- Unity3d插件iTween的使用
- AC Me
- Django(九)下:Ajax操作、图片验证码、KindEditor使用
- [POJ3630]Phone List (Tire)
- Fortran与C/C++混合编程示例
- MyBatis笔记----报错Exception in thread ";main"; org.apache.ibatis.binding.BindingException: Invalid bound statement (not found): com.ij34.model.UserMapper.selectUser
- 『TensorFlow』数据读取类_data.Dataset
- 搭建mxnet-gpu docker的pyhon remote kernel
- YOCVM
- Web App 和 Native App,哪个是趋势?
- mac上配置mysql与redis server,并结合Pydev准备某爬虫环境
- java资源文件解读
- C# Log4net根据日志等级输出到不同文件
热门文章
- jfinal excel表导出
- C#Aspose操作Word &; Excel简版(后会研究补充更多功能)
- 使用git stash命令保存和恢复进度
- popen和pclose详解及实例
- 解决cmd目录下pip命令不存在的问题
- 一个batch的数据如何做反向传播
- P1880 [NOI1995]石子合并【区间DP】
- Kubespray部署Kubernetes 1.13.0(使用本地镜像仓库)
- Android 完美解决bundle实现页面跳转并保留之前数据+传值
- [原]sencha touch之NavigationView