IOS内存管理与头疼的内存泄漏问题的探索

一 、数据到底存在那里?

iOS的数据是存储在堆和栈中,内存管理它管理的是堆上的内存,栈上内存不需要我们去管理,因为栈里面存储的数据生命周期一旦消失内存就会自动释放(编辑器自动分配和释放)

iOS很早之前是采用MRC手动管理内存(机器码,程序员手动控制内存分配与释放),后面统一用ARC来管理内存(系统自动分配)

便于理解MRC:

01


二、内存泄漏

相关的两个概念:

a.内存泄漏 ----- 所占内存用完了未释放。 一两次内存泄漏可以忽略,长时间的累积就会导致程序crash。

b.内存溢出 -----  需要的内存过大,超过了手机内存的负载能力。

xcode里面的编译警告⚠️往往会造成内存泄漏,能解决的警告就解决掉。

上线之前的排查手段:

1.静态分析(Analyze),入口:Xcode-Product->Analyze,主要分析4种问题

a.逻辑错误。访问空指针或未初始化的变量等。

b.内存管理错误。如内存泄漏等。

c.声明错误。从未使用过的变量。

d.Api调用错误。未包含使用的库或者框架。

分析完之后把三方库折叠起来(三方库有蓝色感叹号

02

如果是手动倒入的,可以解决掉;pods导入的忽略),然后看自己项目的错误

结果如图,有7种类型的错误:

03

所遇到的实际问题总结:

静态分析Analyze错误情况汇总

2.动态分析

1.Xcode->Product->Profile

2.选择Leaks,点击Choose,如图:


04

常见的问题汇总

对应的相关文章

你可能感兴趣的:(IOS内存管理与头疼的内存泄漏问题的探索)