文档章节

使用Instruments检测内存泄漏

 王素年
发布于 2017/07/07 17:57
字数 963
阅读 73
收藏 0

instrument能做的事情:
1.Instruments是用于动态调追踪和分析OS X和iOS的代码的性能分析和测试工具;
2.Instruments支持多线程的调试;
3.可以用Instruments去录制和回放,图形用户界面的操作过程
4.可将录制的图形界面操作和Instruments保存为模板,供以后访问使用。
5.追踪代码中的(甚至是那些难以复制的)问题;
6.分析程序的性能;
7.实现程序的自动化测试;
8..部分实现程序的压力测试;
9.执行系统级别的通用问题追踪调试;
10.使你对程序的内部运行过程更加了解。

 

instrument中常用的工具:

Leaks(泄漏):一般的查看内存使用情况,检查泄漏的内存,并提供了所有活动的分配和泄漏模块的类对象分配统计信息以及内存地址历史记录;
Time Profiler(时间探查):执行对系统的CPU上运行的进程低负载时间为基础采样。
Allocations(内存分配):跟踪过程的匿名虚拟内存和堆的对象提供类名和可选保留/释放历史;
Activity Monitor(活动监视器):显示器处理的CPU、内存和网络使用情况统计;
Blank(空模板):创建一个空的模板,可以从Library库中添加其他模板;
Automation(自动化):这个模板执行它模拟用户界面交互为IOS机应用从instrument启动的脚本;
Core Data:监测读取、缓存未命中、保存等操作,能直观显示是否保存次数远超实际需要。
Cocoa Layout:观察约束变化,找出布局代码的问题所在。
Network:跟踪 TCP / IP和 UDP / IP 连接。
Automations:创建和编辑测试脚本来自动化 iOS 应用的用户界面测试。

 

Instruments最常用的三大类(主要介绍下面这三个的操作):
 Leaks:找到引发内存泄漏的起点
 Time Profiler:分析代码的执行时间,找出导致程序变慢的原因。
 Allocations:监测内存使用/分配情况

 

 

使用 Instruments 的 Leaks工具

1.打开

1.首先我们选中Xcode先把模拟器(command + R)运行起来
2.然后我们再选中Xcode,按快捷键(command + control + i)运行起来,

3.然后出现如下界面,选择Leaks


此时Leaks已经跑起来了。

 

或者

 

可以 点击Xcode的“调试导航”(如图一)

 

然后选中“Memory”,再点击右侧的 “Profile in Instruments”,(如图二)

 

会自动打开Instruments。这时候会弹出来一个对话框 。选择“Transfer” 这种方式打开,(如图三)

 

 

或者

 

通过Xcode --> Open Developer Tool -->instruments --leaks 的方式来打开)(如图0)

 

 

 

2.打开后界面如下:

Leaks是动态监测,所以我们需要手动操作APP,进行测试,一边操作APP,一边观察Leaks的变化,

点击红点Record(红色圆圈按钮)运行。
观察,我们可以发现在Leaks里面有一个红色X,这说明了我们的APP存在内存泄露
点击暂停,点击其中一个,然后我们开始分析。(也可继续检测,当多个时暂停,一次处理了多个)


下面就是定位修改了,此时选中有红色叉的Leaks,下面有个"田"字方格,点开,选中Call Tree。
6.下面就是最关键的一步,在这个界面的右下角有若干选框,选中Invert Call Tree 和Hide System Libraries,(红圈范围内)(如果不知道在那个位置请接着往下看)
7.定位
在详情面板选中显示的若干条中的一条,双击,会自动跳到内存泄露代码处,然后点击右上角 Xcode 图标进行修改。

http://www.jianshu.com/p/92cd90e65d4c

http://www.jianshu.com/p/e77d9cb5d0d4

© 著作权归作者所有

共有 人打赏支持
粉丝 2
博文 71
码字总数 44391
作品 0
普陀
程序员
私信 提问
Cocos开发中性能优化工具介绍之Xcode中Instruments工具使用

Instruments是动态分析工具,它与Xcode集成在一起,可以在Xcode中通过菜单Product→Profile启动。启动如图所示,Instruments有很多跟踪模板可以动态分析和跟踪内存、CPU和文件系统。 每个跟踪...

智捷课堂
2014/11/05
0
0
两分钟让你学会使用instruments leaks检测内存泄漏

虽然苹果给我们提供了ARC(自动内存管理模式)的开发环境,但是在日常开发中也不排除会出现内存泄漏问题 检测内存泄漏有很多方法,本篇文章介绍的是xcode自带工具instruments 嗯,不多说,快速入门...

Aracya
06/06
0
0
Mac -XCode 各种目录路径和调试方法

hosts文件所在目录: /private/etc/ xcode插件目录: ~/Library/Application Support/Developer/Shared/Xcode/Plug-ins 模拟器路径: ~/Library/Developer/Xcode/DerivedData 删除多余配置证书......

Nlinger
2017/06/07
0
0
XCode 检测内存泄露:Instruments中的Leaks

如果要检测内存泄露,我们会使用Xcode7自带的Instruments中的Leaks工具来检测. 现在的开发环境是ARC,所以很少会出现内存泄漏的情况. 不过我们一定要养好码代码的规范性. 例如:使用通知,别忘了...

奋斗的青春年华
2016/09/09
82
0
Managing Toll-Free Bridging

在cocoa application的应用中,我们有时会使用Core Foundation(CF),我们经常会在Objective-C和CF之间进行转化。系统使用arc的状态下,编译器不能自动管理CF的内存,这时候你必须使用CFRet...

鉴客
2012/01/09
286
0

没有更多内容

加载失败,请刷新页面

加载更多

说一说MySQL的锁机制

锁概述   MySQL的锁机制,就是数据库为了保证数据的一致性而设计的面对并发场景的一种规则。   最显著的特点是不同的存储引擎支持不同的锁机制,InnoDB支持行锁和表锁,MyISAM支持表锁。...

开元中国2015
22分钟前
5
0
浅谈教你如何掌握Linux系统

浅谈教你如何掌握Linux系统 linux能做什么?相信绝大数人都有这样的疑问。可以玩吃鸡吗?可以玩lol吗? 如果你是以娱乐的名义来评价linux的可用性,对不起,linux可能不适合你,因为linux是一...

linuxCool
29分钟前
3
0
基于Spring Boot实现图片上传/加水印一把梭操作

文章共 537字,阅读大约需要 2分钟 ! 概述 很多网站的图片为了版权考虑都加有水印,尤其是那些图片类网站。自己正好最近和图片打交道比较多,因此就探索了一番基于 Spring Boot这把利器来实...

CodeSheep
40分钟前
3
0
设计一个可拔插的 IOC 容器

前言 磨了许久,借助最近的一次通宵上线 cicada 终于更新了 v2.0.0 版本。 之所以大的版本号变为 2,确实是向下不兼容了;主要表现为: 修复了几个反馈的 bug。 灵活的路由方式。 可拔插的 ...

crossoverJie
今天
4
0
Apache和PHP结合,httpd的虚拟主机配置

httpd配置支持php 上次安装httpd2.4对应的配置文件:/usr/local/apache2.4/conf/httpd.conf 编辑配置文件,修改以下4个地方 ServerName Require all denied AddType application/x-httpd-ph...

野雪球
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部