leaks工具查找内存泄露

摘要:
当苹果没有提供ARC(自动内存管理机制)时,我们几乎一半的开发时间都用这种方式管理内存。后来,苹果非常人道地提供ARC,但仍然发生内存泄漏。内存泄漏是一个非常严重的问题。这里简要介绍了如何使用Xcode7 7中包含的工具中的泄漏来检测和定位程序中的内存泄漏(在分析内存泄漏时,我们无法找到所有的内存泄漏,这些泄漏仅在用户操作时产生。)步骤1:

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

第一步:打开Xcode7自带的Instruments

leaks工具查找内存泄露第1张

或者:

leaks工具查找内存泄露第2张

或者:长按运行按钮,然后出现如图所示列表,点击Profile.

leaks工具查找内存泄露第3张

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

leaks工具查找内存泄露第4张

选择之后界面如下图:

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

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

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

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

leaks工具查找内存泄露第5张

 

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

leaks工具查找内存泄露第6张

 

显示如下图界面

leaks工具查找内存泄露第7张

 

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

leaks工具查找内存泄露第8张

 

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

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

leaks工具查找内存泄露第9张

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

 在选择call tree后,可能你会发现查看不到源码从而无法定位内存泄漏的位置,只是显示16进制的数据。此时需要你在Xcode中检查是否有dSYM File生成,如下图所示选择第二项DWARF with dSYM File.

leaks工具查找内存泄露第10张

 

转载:http://www.cnblogs.com/iOSv587country/p/4862989.html#commentform

免责声明:文章转载自《leaks工具查找内存泄露》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇【Linux】【kafka】【zookeeper】Linux安装kafkaSpring Cloud Gateway+Nacos,yml+properties两种配置文件方式搭建网关服务下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

.NET实现微博粉丝服务平台接口

【文章摘要】Senparc.Weixin.MP虽然是微信公众号的SDK,但由于易信公众号和新浪微博粉丝服务平台也提供了微信兼容接口,所以也可以使用其快速实现相应的服务,当然微博由于与微信存在差异,如果不改动原始SDK,则需要对一些地方进行调整。本文使用Senparc.Weixin.MP快速实现新浪微博粉丝服务平台的接口。 【文章索引】 新浪微博粉丝服务平...

框架模块设计经验总结

转自:http://www.cnblogs.com/zgynhqf/archive/2011/07/15/2107593.html 这是原创,尊重原创、、、、、、、、、、、、     框架模块设计经验总结      三个月没写日志了,比较懒散……下半年准备做OEA 的 B/S 版本,比较复杂,需要从架构设计开始认真入手。正好今天到了部门反思的时间,今天...

Android 中如何计算 App 的启动时间?

利用python或者直接用adb命令怎么计算apk的启动时间呢?就是计算从点击图标到apk完全启动所花费的时间。比如,对游戏来说就是点击游戏图标到进入到登录界面的这段时间。 已知的两种方法貌似可以获取,但是感觉结果不准确:一种是,adb shell am start -w packagename/activity,这个可以得到两个值,ThisTime和To...

C#笔记25:比较和排序(IComparable和IComparer以及它们的泛型实现)

C#笔记25:比较和排序(IComparable和IComparer以及它们的泛型实现) 本文摘要: 1:比较和排序的概念; 2:IComparable和IComparer; 3:IComparable和IComparer的泛型实现IComparable<T>和IComparer<T>; 1:比较和排序的概念     比较:两个实体...

进阶:案例五: Dynamic 创建 Business Graphic

效果图: step: 无需节点无需UI 1、添加属性 2、代码: method WDDOMODIFYVIEW . DATA:lr_graph TYPE REF TO cl_wd_business_graphics, lr_cat TYPE REF TO cl_wd_category, lr_series TYPE REF...

JavaScript中科学计数法转化为数值字符串形式

原文地址:https://www.css88.com/archives/9318 (受益匪浅) JavaScript 中经常会碰到数值计算问题,偶尔会在不经意间报一个不是bug的bug。今天来说说一个特殊的例子。我以0.0011BTC 价格买入 0.0002CZR 计算出了的金额是 0.00000022BTC,而 JavaScript 计算出来的金额是 2...