Skip to content

cocoa-ziyue/LeaksResolve

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 

Repository files navigation

LeaksResolve

iOS常见内存泄露解决方案 内存泄露:如果程序运行时一直分配内存而不及时释放无用的内存,程序占用的内存越来越大,直到把系统分配给该APP的内存消耗殚尽,程序因无内存可用导致崩溃,这样的情况我们称之为内存泄漏。
内存泄露可能引发的问题:
1)内存消耗殆尽的时候,程序会因没有内存被杀死,即crash。
2)当内存快要用完的时候,会非常的卡顿。
3)如果是ViewController没有释放掉,引起的内存泄露,还会引起其他很多问题,尤其是和通知相关的。没有被释放掉的ViewController还能接收通知,还会执行相关的动作,所以会引起各种各样的异常情况的发生。(这一点尤为重要,项目中重点关注)

常见的监测方法 :
1.静态分析:通过静态分析我们可以最初步的了解到代码的一些不规范的地方和一些代码逻辑上的错误;
2.Leaks
3.MLeaksFinder

常见循环引用
1.NSTimer:创建定时器时,当前控制器引用而定时器了(为什么因引用定时器?后续要用到这个定时器对象),在给定时器添加任务时,定时器保留了self(当前控制器).这里就出现了循环引用.
解决方案:1.控制器不再引用定时器(不太可能) 2.定时器不再保留当前控制器(较为科学,直接停止掉即可)

2.GCD计时器,使用GCD的定时器,要注意使用weakself。

3.VC的内存泄露。解决方法:想要知道ViewController有没有被释放,一个方法就是可以通过看ViewController有没有执行dealloc方法。

4.block内存泄露

5.NSNotification内存泄露

6.delegate内存泄露

About

iOS内存泄露解决常见方案

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published