美文网首页
IOS内存管理与头疼的内存泄漏问题的探索

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

作者: 小白奔哥 | 来源:发表于2021-04-29 14:34 被阅读0次

一 、数据到底存在那里?

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内存管理与头疼的内存泄漏问题的探索

    一 、数据到底存在那里? iOS的数据是存储在堆和栈中,内存管理它管理的是堆上的内存,栈上内存不需要我们去管理,因...

  • 内存泄漏与循环引用

    在iOS开发中,内存泄漏是让开发者比较头疼的一件事。虽然ARC可以帮助开发者解决大部分的内存管理问题,但其对内存泄...

  • iOS | 面试 - 内存管理

    iOS | 面试知识整理 - 内存管理(五) 1.什么是内存泄漏? 内存泄漏指动态分配内存的对象在使用完后没有被...

  • 安卓内存泄漏

    Android 内存泄漏总结 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏...

  • Part1_Android内存泄漏总结

    Android 内存泄漏总结 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏...

  • Android 内存泄漏总结

    Android 内存泄漏总结 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏...

  • 【中级——高级迈不过去?】Android高级工程师进阶学习——A

    Android 内存泄漏总结 内存管理的目的就是让我们在开发中怎么有效的避免我们的应用出现内存泄漏的问题。内存泄漏...

  • iOS 内存泄漏三两事

    iOS 内存泄漏三两事 iOS 内存泄漏三两事

  • iOS内存管理

    摘自《iOS程序员面试笔试宝典》 一、内存管理 1.什么是内存泄漏?什么是安全释放 内存泄漏指动态分配内存的对象在...

  • iOS 内存泄漏排查方法及原因分析

    本文将从以下两个层面解决iOS内存泄漏问题: 内存泄漏排查方法(工具) 内存泄漏原因分析(解决方案) 在正式开始前...

网友评论

      本文标题:IOS内存管理与头疼的内存泄漏问题的探索

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