美文网首页
autoreleasepool理解

autoreleasepool理解

作者: 夺光 | 来源:发表于2018-01-24 12:01 被阅读19次

    1、autoreleasepool的结构是由autoreleasepoolpage为节点组成的双链表

    2、autoreleasepoolpush的时候是一个子池的开始pop是子池的结束,全部是以页的形式进行数据的管理

    3、开启一个autoreleasepool的时候push会面临三种情况 ,page是空、非空、非空并且当前page满了。这三种情况的处理分别为:空的时候建立一个新的poolpage。非空的时候进行add操作,操作的主要是拨动next指针,这个next的作用是指向最新obj的下一个地址的(可以理解为nil)。当满了的时候,去寻找child page,如果没有就新建一个page,然后进行add操作。

    4、需要看到的是子pool和父pool之间是如何界定的,也就是pop的时候如何做到只释放子pool的,界定就是简单的一个nil来做边界。

    5、hotpage是一个优化的操作,也就是当前正在操作的一个page的引用,coldpage是指上一个父page。

    6、pop的时候会找到当前page页,然后得到pool的地址,对page页由next指针开始向下(向低地址)开始便利存入的对象,全部置为0xa3a3a3a3并向下移动next,然后释放掉这个对象。

    相关文章

      网友评论

          本文标题:autoreleasepool理解

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