使用Xcode7的Instruments检测解决iOS内存泄露

使用Xcode7的Instruments检测解决iOS内存泄露,第1张

  Xcode

  Xcode前身是NeXT的Project Builder。

  The Xcode suite 包含有GNU C++ompiler CollecTIon自由软件 (GCC、 apple-darwin9-gcc-4.0.1 以及 apple-darwin9-gcc-4.2.1, 默认的是第一个),并支持 C语言、C++、Fortran、ObjecTIve-C、ObjecTIve-C++、Java、AppleScript、Python以及Ruby,还提供Cocoa、Carbon以及Java等编程模式。协力厂商更提供了 GNU Pascal,Free Pascal, Ada, C#, Perl, Haskell 和 D语言。Xcode套件使用 GDB作为其后台调试工具。

  Xcode运行于苹果公司的Mac *** 作系统下,是苹果公司向开发人员提供的集成开发环境(非开源),用于开发Mac OS X,iOS的应用程序。

  不管你用C、C++、ObjecTIve-C或Java编写程序,在AppleScript里编写脚本,还是试图从另一个奇妙的工具中转移编码,你会发现 Xcode 编译速度极快。每次 *** 作都很快速和轻松。

  内存泄漏

  内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。

  内存泄漏缺陷具有隐蔽性、积累性的特征,比其他内存非法访问错误更难检测。因为内存泄漏的产生原因是内存块未被释放,属于遗漏型缺陷而不是过错型缺陷。此外,内存泄漏通常不会直接产生可观察的错误症状,而是逐渐积累,降低系统整体性能,极端的情况下可能使系统崩溃。

  随着计算机应用需求的日益增加,应用程序的设计与开发也相应的日趋复杂,开发人员在程序实现的过程中处理的变量也大量增加,如何有效进行内存分配和释放,防止内存泄漏的问题变得越来越突出。例如服务器应用软件,需要长时间的运行,不断的处理由客户端发来的请求,如果没有有效的内存管理,每处理一次请求信息就有一定的内存泄漏。这样不仅影响到服务器的性能,还可能造成整个系统的崩溃。因此,内存管理成为软件设计开发人员在设计中考虑的主要方面

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

  第一步:打开Xcode7自带的Instruments

  使用Xcode7的Instruments检测解决iOS内存泄露,使用Xcode7的Instruments检测解决iOS内存泄露,第2张

  或者:

  使用Xcode7的Instruments检测解决iOS内存泄露,使用Xcode7的Instruments检测解决iOS内存泄露,第3张

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

  

  选择之后界面如下图:

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

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

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

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

  使用Xcode7的Instruments检测解决iOS内存泄露,使用Xcode7的Instruments检测解决iOS内存泄露,第4张

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

 使用Xcode7的Instruments检测解决iOS内存泄露,使用Xcode7的Instruments检测解决iOS内存泄露,第5张

  显示如下图界面

  使用Xcode7的Instruments检测解决iOS内存泄露,使用Xcode7的Instruments检测解决iOS内存泄露,第6张

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

  使用Xcode7的Instruments检测解决iOS内存泄露,使用Xcode7的Instruments检测解决iOS内存泄露,第7张

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

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

  使用Xcode7的Instruments检测解决iOS内存泄露,使用Xcode7的Instruments检测解决iOS内存泄露,第8张

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

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2717609.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-17
下一篇 2022-08-17

发表评论

登录后才能评论

评论列表(0条)

保存