文档章节

使用Instruments检测内存泄漏

 王素年
发布于 2017/07/07 17:57
字数 963
阅读 62
收藏 0
点赞 0
评论 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

© 著作权归作者所有

共有 人打赏支持
粉丝 1
博文 70
码字总数 43954
作品 0
普陀
程序员
Mac -XCode 各种目录路径和调试方法

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

Nlinger ⋅ 2017/06/07 ⋅ 0

两分钟让你学会使用instruments leaks检测内存泄漏

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

Aracya ⋅ 06/06 ⋅ 0

Cocos开发中性能优化工具介绍之Xcode中Instruments工具使用

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

智捷课堂 ⋅ 2014/11/05 ⋅ 0

XCode 检测内存泄露:Instruments中的Leaks

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

奋斗的青春年华 ⋅ 2016/09/09 ⋅ 0

UITextView 内存泄漏

xcode5,在做项目的时候,发现在一个navigationController push到一个页面后,在这个页面有一个UITextview,然后点击这个textview,弹出键盘,随便打几个字,然后点返回,pop回到第一个contr...

板鞋飞人 ⋅ 2014/02/18 ⋅ 3

【IOS】Instruments 使用教程

最近一直在解决内存泄漏的问题,天天和Instruments这个工具打交道,本来想给大家写一片相关的教程的。但是今天逛论坛的时候发现了别人翻译的文档,写的好,自认为没有办法写出。所以就不写了...

toss156 ⋅ 2012/05/18 ⋅ 0

Managing Toll-Free Bridging

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

鉴客 ⋅ 2012/01/09 ⋅ 0

精品 CF与OBJC在ARC下的内存管理。

http://wangjun.easymorse.com/?p=1490 « ios本地通知和远程通知 创建一个Storyboard工程 » Managing Toll-Free Bridging 在cocoa application的应用中,我们有时会使用Core Foundation(C...

晨曦之光 ⋅ 2012/05/28 ⋅ 0

Xcode8 使用Instruments检测定位并解决iOS内存泄漏问题

缘由 最近公司项目更新了几个版本,主要是客户端配合H5上一些活动和优化解决一些遗留下来的问题。review代码的过程中,发现项目在模拟器里跑时内存使用很大,达到了130多兆,趁着刚发完新版有...

春夏love雨雪 ⋅ 2017/09/12 ⋅ 0

instruments leaks

怎样在xcode4.x里面使用Memory Leaks和Instruments EXCBADACCESS错误,我通常建议:   1.在可执行选项中设置NSZombieEnabled参数,这有时会帮缩小问题的范围;   2.运行apple的内存检测工具...

JohnZr ⋅ 2012/07/29 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

十五周二次课

十五周二次课 17.1mysql主从介绍 17.2准备工作 17.3配置主 17.4配置从 17.5测试主从同步 17.1mysql主从介绍 MySQL主从介绍 MySQL主从又叫做Replication、AB复制。简单讲就是A和B两台机器做主...

河图再现 ⋅ 59分钟前 ⋅ 0

docker安装snmp rrdtool环境

以Ubuntu16:04作为基础版本 docker pull ubuntu:16.04 启动一个容器 docker run -d -i -t --name flow_mete ubuntu:16.04 bash 进入容器 docker exec -it flow_mete bash cd ~ 安装基本软件 ......

messud4312 ⋅ 今天 ⋅ 0

OSChina 周一乱弹 —— 快别开心了,你还没有女友呢。

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @莱布妮子 :分享吴彤的单曲《好春光》 《好春光》- 吴彤 手机党少年们想听歌,请使劲儿戳(这里) @clouddyy :小萝莉街上乱跑,误把我认错成...

小小编辑 ⋅ 今天 ⋅ 7

mysql in action / alter table

change character set ALTER SCHEMA `employees` DEFAULT CHARACTER SET utf8mb4 DEFAULT COLLATE utf8mb4_general_ci ;ALTER TABLE `employees`.`t2` CHARACTER SET = utf8mb4 , COLLAT......

qwfys ⋅ 今天 ⋅ 0

Java 开发者不容错过的 12 种高效工具

Java 开发者常常都会想办法如何更快地编写 Java 代码,让编程变得更加轻松。目前,市面上涌现出越来越多的高效编程工具。所以,以下总结了一系列工具列表,其中包含了大多数开发人员已经使用...

jason_kiss ⋅ 昨天 ⋅ 0

Linux下php访问远程ms sqlserver

1、安装freetds(略,安装在/opt/local/freetds 下) 2、cd /path/to/php-5.6.36/ 进入PHP源码目录 3、cd ext/mssql进入MSSQL模块源码目录 4、/opt/php/bin/phpize生成编译配置文件 5、 . ./...

wangxuwei ⋅ 昨天 ⋅ 0

如何成为技术专家

文章来源于 -- 时间的朋友 拥有良好的心态。首先要有空杯心态,用欣赏的眼光发现并学习别人的长处,包括但不限于工具的使用,工作方法,解决问题以及规划未来的能力等。向别人学习的同时要注...

长安一梦 ⋅ 昨天 ⋅ 0

Linux vmstat命令实战详解

vmstat命令是最常见的Linux/Unix监控工具,可以展现给定时间间隔的服务器的状态值,包括服务器的CPU使用率,内存使用,虚拟内存交换情况,IO读写情况。这个命令是我查看Linux/Unix最喜爱的命令...

刘祖鹏 ⋅ 昨天 ⋅ 0

MySQL

查看表相关命令 - 查看表结构    desc 表名- 查看生成表的SQL    show create table 表名- 查看索引    show index from  表名 使用索引和不使用索引 由于索引是专门用于加...

stars永恒 ⋅ 昨天 ⋅ 0

easyui学习笔记

EasyUI常用控件禁用方法 combobox $("#id").combobox({ disabled: true }); ----- $("#id").combobox({ disabled: false}); validatebox $("#id").attr("readonly", true); ----- $("#id").r......

miaojiangmin ⋅ 昨天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部