nginx内存池详解_免费下载

nginx内存池详解_免费下载

ID:42606193

大小:199.31 KB

页数:16页

时间:2019-09-18

nginx内存池详解_免费下载_第1页
nginx内存池详解_免费下载_第2页
nginx内存池详解_免费下载_第3页
nginx内存池详解_免费下载_第4页
nginx内存池详解_免费下载_第5页
资源描述:

《nginx内存池详解_免费下载》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、Content0. 序1. 内存池结构1.1ngx_pool_t结构1.2 其他相关结构1.3ngx_pool_t的逻辑结构2. 内存池操作2.1 创建内存池2.2 销毁内存池2.3 重置内存池2.4 分配内存2.4.1ngx_palloc()函数分析2.4.2ngx_palloc_block()函数分析2.5 释放内存2.6 注册cleanup2.7 内存池的物理结构3. 一个例子3.1 代码3.2 如何编译3.3 运行结果4. 小结5. 致谢0. 序 nginx对内存的管理由其自己实现的内存池结构ngx_pool_t来完成,本文重点叙述nginx的内存管理。 nginx内存管理相

2、关文件:(1)./src/os/unix/ngx_alloc.h/.c·内存相关的操作,封装了最基本的内存分配函数·如free/malloc/memalign/posix_memalign,分别被封装为ngx_free,ngx_alloc/ngx_calloc,ngx_memalign·ngx_alloc:封装malloc分配内存·ngx_calloc:封装malloc分配内存,并初始化空间内容为0·ngx_memalign:返回基于一个指定alignment的大小为size的内存空间,且其地址为alignment的整数倍,alignment为2的幂。(2)./src/core/ng

3、x_palloc.h/.c·封装创建/销毁内存池,从内存池分配空间等函数 .表示nginx-1.0.4代码目录,本文为/usr/src/nginx-1.0.4。 1. 内存池结构nginx对内存的管理均统一完成,例如,在特定的生命周期统一建立内存池(如main函数系统启动初期即分配1024B大小的内存池),需要内存时统一分配内存池中的内存,在适当的时候释放内存池的内存(如关闭http链接时调用ngx_destroy_pool进行销毁)。因此,开发者只需在需要内存时进行申请即可,不用过多考虑内存的释放等问题,大大提高了开发的效率。先看一下内存池结构。 1.1ngx_pool_t结构此处

4、统一一下概念,内存池的数据块:即分配内存在这些数据块中进行,一个内存池可以有多一个内存池数据块。nginx的内存池结构如下。 00048:typedefstruct{00049:u_char*last;//当前内存池分配到此处,即下一次分配从此处开始00050:u_char*end;//内存池结束位置00051:ngx_pool_t*next;//内存池里面有很多块内存,这些内存块就是通过该指针连成链表的00052:ngx_uint_tfailed;//内存池分配失败次数00053:}ngx_pool_data_t;//内存池的数据块位置信息00054:00055:00056:str

5、uctngx_pool_s{//内存池头部结构00057:ngx_pool_data_td;//内存池的数据块00058:size_tmax;//内存池数据块的最大值00059:ngx_pool_t*current;//指向当前内存池00060:ngx_chain_t*chain;//该指针挂接一个ngx_chain_t结构00061:ngx_pool_large_t*large;//大块内存链表,即分配空间超过max的内存00062:ngx_pool_cleanup_t*cleanup;//释放内存池的callback00063:ngx_log_t*log;//日志信息00064:

6、};其中,sizeof(ngx_pool_data_t)=16B,sizeof(ngx_pool_t)=40B。nginx将几乎所有的结构体放在ngx_core.h文件中重新进行了申明,如下。typedefstructngx_module_sngx_module_t;typedefstructngx_conf_sngx_conf_t;typedefstructngx_cycle_sngx_cycle_t;typedefstructngx_pool_sngx_pool_t;typedefstructngx_chain_sngx_chain_t;typedefstructngx_log_

7、sngx_log_t;typedefstructngx_array_sngx_array_t;typedefstructngx_open_file_sngx_open_file_t;typedefstructngx_command_sngx_command_t;typedefstructngx_file_sngx_file_t;typedefstructngx_event_sngx_event_t;typedefstructngx_event_aio_sn

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。