作者:媛媛天下_945 | 来源:互联网 | 2017-11-03 10:47
Nginx内存池管理的源码在srccorengx_palloc.h、srccorengx_palloc.c两个文件中。先将我整理的注释等内容贴上,方便下面分析:ngx_create_pool:创建poolngx_destory_pool:销毁poolngx_reset_pool:重置pool中的部分数据ngx_pallocngx
Nginx 内存池管理的源码在src/core/ngx_palloc.h、src/core/ngx_palloc.c 两个文件中。
先将我整理的注释等内容贴上,方便下面分析:
ngx_create_pool:创建pool
ngx_destory_pool:销毁 pool
ngx_reset_pool:重置pool中的部分数据
ngx_palloc/ngx_pnalloc:从pool中分配一块内存
ngx_pool_cleanup_add:为pool添加cleanup数据
struct ngx_pool_cleanup_s {
ngx_pool_cleanup_pt handler; // 当前 cleanup 数据的回调函数
void *data; // 内存的真正地址
ngx_pool_cleanup_t *next; // 指向下一块 cleanup 内存的指针
};
struct ngx_pool_large_s {
ngx_pool_large_t *next; // 指向下一块 large 内存的指针
void *alloc; // 内存的真正地址
};
typedef struct