nginx 源码学习笔记(七)——内存分配相关源码分析


内存分配相关

1.系统功能封装

内存相关的操作主要在os/unix/ngx_alloc.{h,c} 和 core/ngx_palloc.{h,c}中。

其中os/unix/ngx_alloc.{h,c}封装了最基本的内存分配函数,是对c原有的malloc/free/memalign等函数的封装,对应函数为:

a.ngx_alloc:对malloc进行了简单的封装;


b.ngx_calloc:使用ngx_alloc分配内存,并且把内存赋值0:


c. ngx_memalign 返回基于一个指定的alignment大小的数值为对齐基数的空间

d.ngx_free 内存释放操作

2. nginx内存池

为了方便系统模块对内存的使用,方便内存的管理,nginx自己是信了进程池机制来进行内存的分配和释放,首先nginx会在特定的生命周期帮你统一建立内存池,当需要进行内存分配的时候同一通过内存池中的内存进行分配,最后nginx会在适当的时候释放内存吃的资源,开发者只要在需要的时候对内存进行申请即可,不用过多考虑释放的问题,这也就是在os/unix/ngx_alloc.c文件中没有看到free操作的原因吧。

下面来看一下内存池的主要结构:


下面是几个比较重要的操作




优质内容筛选与推荐>>
1、poj2352-Stars
2、进程与线程的概念
3、Markdown 使用
4、Windows下压缩包安装Mysql
5、电子商务系统之产品目录


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号