美文网首页
About AutoReleasePool

About AutoReleasePool

作者: 无边小猪 | 来源:发表于2018-07-04 11:14 被阅读0次

    1、所有语言从内存管理上来说分两种,自动内存管理和非自动内存管理。
    自动内存管理不需要开发者回收内存,语言会带垃圾回收机制,如java、c++/clr。
    非自动内存管理需要开发者管理内存,原则是谁创建谁释放,如c++、Objective-c。
    2、Objective-c除了谁创建谁释放的规则外又额外增加了一个autoreleasepool的概念,来帮助管理内存。
    3、autoreleasepool是配合autorelease关键字使用的。例如:

    NSMutableArray *array=[[[NSMutableArray alloc] init] autorelease];
    

    4、autoreleasepool是可以嵌套的,是一个栈式结构,当创建一个autoreleasepool的时候,会在栈中加入一个哨兵对象,同时设该autoreleasepool为当前autoreleasepool,而后面凡事加了autorelease关键字的对象就都会push到栈中来管理,当autoreleasepool释放的时候,会将当前autoreleasepool创建之后所有的托管对象都发送release消息(注意不是释放,只是引用计数器减1)。
    5、autoreleasepool释放的方式有两种,一种是autoreleasepool由用户创建同时块执行完毕会释放,另一种是系统的autoreleasepool,在每次Runloop休眠之前释放并重新创建。

    相关文章

      网友评论

          本文标题:About AutoReleasePool

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