美文网首页
iOS 内存管理

iOS 内存管理

作者: 863cda997e42 | 来源:发表于2018-04-12 10:49 被阅读7次

在介绍内存管理之前,先来简单了解一下内存中的堆和栈。

当程序执行某个方法时,会从栈中分配一块内存空间,这块内存空间称为帧。帧负责保存程序在方法内声明的变量的值。

当运行main函数时,它的帧会被保存在栈的底部,当main函数调用其他函数时,这个函数的帧会压入栈的顶部。被调用的函数还可以调用其他方法。当被调用的方法结束时,程序会将其帧从栈顶弹出并释放。

堆是内存中的另一块区域,和栈不同,堆包含了大量无序的活动对象,需要用指针来保存这些对象在堆中地址。

由于iOS设备的内存非常有限,当不要某些对象时,就要将其释放掉,将其所占的内存归还给堆,使这块内存能够被重新使用。

注意,如果只分配内存而不释放,设备内存将会很快被消耗完。如果释放了正在使用的内存,那么程序将会出错。可见内存管理是多么的重要。

ARC与内存管理

编写iOS应用时,只需要通过ARC管理内存,也就是自动引用计数。

指针变量与对象所有权

指针变量暗含了对其所指向的对象的所有权。
如果某个对象没有拥有者,就应该将其释放掉。
如果某个对象有一个或多个拥有者,就必须不能释放。

强引用循环

如果两个或多个对象之间相互引用,对象将不会被释放,造成内存泄露。

相关文章

网友评论

      本文标题:iOS 内存管理

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