一 、数据到底存在那里?
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所遇到的实际问题总结:
2.动态分析
1.Xcode->Product->Profile
2.选择Leaks,点击Choose,如图:
04
网友评论