zoukankan      html  css  js  c++  java
  • 使用Analyze 和Instruments-Leaks分析解决iOS内存泄露

    版权声明:本文为博主原创文章,未经博主允许不得转载。

    使用Analyze和Instruments-Leaks分析解决iOS内存泄露

     
    实验的开发环境:Xcode 7
     

    一、使用Product-Analyze分析内存泄( 快捷键: cmd + shift + B )

    APP程序开发完成后,可以利用Xcode的Analyze就能分析到哪里有内存泄露。

    分析之后可以看到:

    这里提示model没被释放,有内存泄露,那我们释放

        [model  release];

    再Analyze分析,显示Build succeeded,不存在任何内存泄露,表明这个问题解决了。 

     

    二、使用Instruments的leaks工具分析内存泄露( 快捷键: cmd + ctrl + I )

    利用Product-Analyze分析内存泄露,并不能把所有的内存泄露查出来,因为有的内存泄露是在运行时,用户操作时才产生的。那就需要用到Instruments了。

    1.

    Xcode打开一个已完成项目,选好模拟器,点击Run,让程序跑起来。

    2.

    点击Xcode菜单栏 Product -- Profile ( 快捷键: cmd + ctrl + I )。

     
     
    3.
    按上面操作,显示Build succeeded后,会跳出Instruments工具,选择Leaks(水龙头)选项。
     
    4.
    先按下红色的圆形按钮,再选择Leak,然后选择Call Tree,勾选选中Invert Call Tree 和Hide System Libraries。
     
     
    5.
    在模拟器中测试App各项功能,查看是否有代码出现内存泄露。
     
     
     6.
    定位内存泄露代码,并修改。
    将故意注释掉的[model release];代码打开。
     
    7.
    再次测试是否存在内存泄露。

    在添加了[model release];代码后,再重新Run,然后cmd + ctrl +I, 切换到Leaks界面,无论再怎么点击“加载音乐”按钮,都检测不到内存泄露了,表明内存泄露被堵住了。

     

    iOS开发者交流群:180080550
  • 相关阅读:
    多线程----Thread类,Runnable接口,线程池,Callable接口,线程安全
    PHP-数据类型
    MySQL-数据与事务控制语言
    数据库查询练习题
    MySQL-数据操作语言(DML)
    MySQL-表操作
    MySQL-数据类型
    MySQL-数据库相关操作
    js Dom简单练习题
    js中的Dom操作
  • 原文地址:https://www.cnblogs.com/stevenwuzheng/p/5341881.html
Copyright © 2011-2022 走看看