文章目录
hi,大家在实际开发中,有没有遇到app异常崩溃,界面delloc方法不调用的问题呢?很可能是由于你的app出现了内存泄漏的问题,今天就和大家从简入深的探讨一下怎样通过简单的分析方法或xcode自带工具instrument的静态分析,动态分析来定位出问题的代码以解决的吧。
先提出两个基本概念:
1,内存溢出(out of memory):是指在运行代码时,程序的内存突然增大,使得没有足够的内存空间去申请,导致程序崩溃的现象。
2,内存泄漏( memory leak) :是指程序在申请内存后,使用完并没有进行释放该处内存空间,一次内存泄漏危害可以忽略,但累计就会造成可用内存减少,直到用光崩溃。
我们时不时在制造内存泄漏,无论是新手开发者还是业界老鸟。它和我们的经验无关。最重要的是要清除它们,让我们的app更干净,避免崩溃。为什么?因为它们很危险。
注:内存应尽可能保持在100M以下,如若长时间超出就很可能崩溃,有一个不全机型崩溃数的统计表供大家参考,如下图:

简单观察内存
我们在用xcode实时调试代码的过程中,就可以简单的查看运行程序的cpu占用率,内存占用,电池,硬件,网络的信息。我们平常可以在跑项目时,关注下memory这个属性,如果内存突然增大,就意味着这个位置会出现待优化代码。这也是较简单的一种调试方法。

但这样的操作,我们并不能很好的查找出出现问题的代码,只能大致的去排查出相应的范围,再去分析查找。那有没有一种办法,可以定位出现问题的代码,让我们快速的解决问题呢!答案肯定是有的。接下来让我们看下xcode自带工具instrument对内存的分析吧。
静态分析
概念
静态代码分析(Static Code Analysis):用来发现源代码潜在的错误与缺陷,源代码编译后只有在运行时有可能会产生细微的错误,他们可能难以识别和修复,所以这些潜在的威胁在开发过程中一定要尽可能清理干净,尽量编写的时候注意类似可能潜在的威胁与缺陷
可排查到的问题
1.逻辑缺陷,如访问未初始化的变量和空指针
2.内存管理的缺陷,如分配后的内存泄漏
3.无效数据(未使用的变量)缺陷
4.使用api缺陷,不遵循库或者框架的使用规则
具体的操作
在Xcode 选项栏里面选择Product -> Analyze (快捷键: command + shift + B) ,点击运行即可。

本文介绍了如何通过Xcode的静态分析和动态分析工具来排查iOS应用的内存泄漏问题。首先,简单介绍了内存溢出和内存泄漏的概念,然后详细阐述了静态分析中的Analyze工具使用,包括其能检测到的问题和解决方案。接着,重点讨论了动态分析,特别是Instruments中的Leaks和Allocations模板,以及如何通过分析内存分配、泄漏和调用栈信息来定位问题。最后,列举了一些常见的内存泄漏场景和解决策略。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



