autoreleasepool
每次 Push 后,都会先添加一个 POOL_BOUNDARY 来占位,是为了对应一次 Pop 的释放,图中表示了两层autoreleasepool的嵌套,需要两次pop完全释放。
autoreleasepool使用双链表来实现,只有在当前 page 空间使用完后,才会创建新的 page,并不是每个 @autoreleasepool 对应一个 AutoreleasePoolPage 对象。
没有POOL_BOUNDARY的AutoreleasePoolPage对象一次pop会释放当前结点中的autorelease对象,下一次pop从父节点开始
参数资料:
[iOS -- Autorelease & AutoreleasePool]:https://juejin.im/post/5d807672f265da03c721d541
[iOS 深入探究 AutoreleasePool]:https://juejin.im/post/5bee7611e51d451fa23898ad
[自动释放池的前世今生 ---- 深入解析 autoreleasepool]:https://draveness.me/autoreleasepool
网友评论