iOS 内存泄露检查方法

作者: 耿杰 | 来源:发表于2019-09-18 18:01 被阅读0次
1、关注项目中自己写的代码警告,并解决它。新版本的Xcode都是有提醒,是否有强引用的。
image.png
2、接下来看一下,项目常见的内存泄露,使用Xcode的Debug Memory Graph来查看内存图
image.png

视图层级

navigationController - ViewController - TestAViewController
2.0、在排查哪个控制器没有dealloc的话,优先检查某个控制器里面,是否有警告。
2.1、通知的Block实现
image.png
  • 1、第一次从ViewControllerpush到TestAViewController,并pop到ViewController的,打开内存图如下。
    • a、很明显能够看到,有一个Block在引用着TestAViewController。


      image.png
    • b、这时候,只需要复制Block块的内存,并在lldb中输入dis -s *(void**)(内存地址+16),就能反汇编查看方法调用栈。从控制台能够看出是initNoti方法,使用了这个Block。此方法参考:https://juejin.im/post/5d70655e518825618e67ad63

      image.png
2.2、NSTimer没有销毁
image.png
  • 1、第一次从ViewControllerpush到TestAViewController,并pop到ViewController的,打开内存图如下。

    image.png
    • a、观察上图,是无法查看,TestAViewController为什么没有被释放。
  • 2、第二次从ViewControllerpush到TestAViewController,并pop到ViewController的,打开内存图如下。

    image.png
    • a、很明显是NSTimer在引用着TestAViewController。
2.3、delete没有使用weak(代码是别人写的,有时候别人一时手快写错了)
image.png
  • 1、第一次从ViewControllerpush到TestAViewController,并pop到ViewController的,打开内存图如下。
    image.png
    • a、在第一次就能非常清晰地查看WTViewdelete在引用着TestAViewController

相关文章

  • iOS 内存泄露检查方法

    1、关注项目中自己写的代码警告,并解决它。新版本的Xcode都是有提醒,是否有强引用的。 2、接下来看一下,项目常...

  • iOS 性能优化(I)

    1. 如何对iOS设备进行性能测试? 测试介绍:App耗时方法检测 2. 开发项目时你是怎么检查内存泄露? 3. ...

  • iOS 内存泄露BUG列举

    1.检查是否可以使用内购 使用Leak 内存泄露工具检查可以看到有内存泄露 2.获取本机DNS 产生内存泄露的代码...

  • linux平台代码内存泄露检查

    linux内存泄露检测cppcheck 静态检查mtracevalgrind linux内存泄露检测 cppche...

  • 性能检测报告Leaks

    Leaks 内存使用, 检查内存泄露情况 MOBFJSContext

  • 分享:在iOS上自动检测内存泄露

    分享:在iOS上自动检测内存泄露 分享:在iOS上自动检测内存泄露

  • 内存泄漏/管理

    ARC 下内存泄露的那些点performSelector延时调用导致的内存泄露iOS ARC下几种导致内存泄露的场...

  • 检查内存泄露

    今天看了唐巧大神的理解 iOS 的内存管理这篇博文,介绍了引用计数和ARC下易引起的循环引用问题,并介绍了利用xc...

  • + (NSMutableDictionary *)getKeyc

    这几天检查程序的泄露问题发现获取手机标识的方法存在内存泄露,查看问题出在 下面的方法 google很久也有发生类似...

  • 性能优化

    1.内存泄露监测 1.内存泄露检测: 1.静态检查方法(引用循环是检测不出来的)手动静态监测 2.自动静态检测...

网友评论

    本文标题:iOS 内存泄露检查方法

    本文链接:https://www.haomeiwen.com/subject/zoykuctx.html