美文网首页
malloc流程图分析

malloc流程图分析

作者: CS_SDN | 来源:发表于2019-12-19 00:50 被阅读0次

    流程图(后面附上)


    malloc基本原理

    在iOS App进程地址空间的各个区域中,最灵活的就要属堆区了,它为进程动态分配内存,也是我们经常和内存打交道的地方。

    通常,我们会在需要新对象的时候,进行 [NSObject alloc]调用,而释放对象时需要release(ARC会自动帮你做到这些)。

    而这些alloc、release方法的调用,通常最终都会走到libsystem_malloc.dylib的malloc()和free()函数这里。libsystem_malloc.dylib是iOS内核之外的一个内存库,我们App进程需要的内存,先回请求到这里,但最终libsystem_malloc.dylib也都会向iOS的系统内核发起申请,映射实际内存到App进程的地址空间上。

    从苹果公开的malloc源码上来看,malloc的原理大致如下:

    malloc内存分配基于malloc zone,并将内存分配按大小分为nano、tiny、small、large几种类型,申请时按需进行最适分配

    malloc在首次调用时,初始化default zone,在64位情况下,会初始化default zone为nano zone,同时初始化一个scalable zone作为helper zone,nano zone负责nano大小的分配,scalable zone则负责tiny、small和large内存的分配

    每次malloc时,根据传入的size参数,优先交给nano zone做分配处理,如果大小不在nano范围,则转交给helper zone处理。

    相关文章

      网友评论

          本文标题:malloc流程图分析

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