美文网首页面试好文
自动释放池原理

自动释放池原理

作者: 灬小五灬 | 来源:发表于2021-03-04 09:23 被阅读0次

1.什么是自动释放池

自动释放池(autorelease pool)是OC的一种内存自动回收机制。
当你向一个对象发送一个autorelease消息的时候,cocoa就将对象的一个引用放入到最新的自动释放池中(当前线程栈顶位置),他仍然是一个正当的对象,因此自动释放池定义的作用域内的其他对象都可以向他发送消息。

2.如何工作

Objecttive-C是通过一种“referring counting”(引用计数)的方式管理内存的。
对象在开始分配内存(alloc)的时候引用计数+1,以后如果有copy,retain的时候都会+1。每当releaseautorelease的时候引用计数就会 -1 ,如果一个对象的引用计数是0,就会被系统销毁。
NSAutoreleasePool就是用来做引用计数的管理工作的,这个东西一般不用你管的。releaseautorelease没什么区别,只是引用计数-1的实际不同而已,autorelease会在对象的使用真正结束的时候才做引用计数-1.

3.自动释放池的实现原理

实现原理:自动释放池以栈的形式实现,当你创建一个新的自动释放池时,他将被添加到栈顶,当一个对象收到autorelease消息的时候,他被添加到当前线程的处于顶的自动释放池中,当自动释放池被回收时,他们就从栈中被删除,并且会给池子里面所有对象的使用都会做一次release操作

相关文章

  • Objective-C内存篇(三) - Autorelease

    什么是自动释放池 自动释放,也是延迟释放。自动释放池的实现原理或者说作用:在自动释放池被销毁或耗尽时,会向池中的所...

  • autoReleasePool 原理

    (一)自动释放池的原理, 自动释放池是由多个autorelease page组成的双向链表,其中主要通过pus...

  • 复习总结3 自动释放池 & 优化

    自动释放池原理 Autorelease pool自动释放池,是OC的一种内存自动回收机制,可以将放入的临时变量统一...

  • iOS底层原理 - 内存管理 之 autorelease

    面试题引发的思考: Q: 自动释放池autoreleasepool底层原理介绍: 自动释放池的主要底层数据结构是:...

  • iOS内存管理4-autorelease自动释放池

    临时变量什么时候释放自动释放池的原理自动释放池能否嵌套使用 使用xcode创建一个project在创建的时候有会生...

  • 自动释放池原理

    1.什么是自动释放池 自动释放池(autorelease pool)是OC的一种内存自动回收机制。当你向一个对象发...

  • 自动释放池原理

    1.什么是自动释放池 自动释放池(autorelease pool)是一种内存自动回收机制。 当你向一个对象发送一...

  • iOS 内存管理--自动释放池底层原理

    前言 在内存管理的学习中自动释放池的原理学习是必须的,作为一个合格的iOS开发者,必须要明白自动释放池的操作原理,...

  • 自动释放池的原理及机制

    一、自动释放池的原理及机制 一、O-C当中的内存释放,并不是像java/.net那样有一个自动的释放池,开发人员不...

  • 自动释放池

    AutoReleasePool的实现原理? AutoReleasePool为什么可以嵌套调用? 自动释放池 是以栈...

网友评论

    本文标题:自动释放池原理

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