下载此文档

nginx内存池详解.docx


文档分类:IT计算机 | 页数:约17页 举报非法文档有奖
1/17
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/17 下载此文档
文档列表 文档介绍
Content
0. 序
1. 内存池结构
ngx_pool_t结构
 其他相关结构
ngx_pool_t的逻辑结构
2. 内存池操作
 创建内存池
 销毁内存池
 重置内存池
 分配内存
ngx_palloc()函数分析
ngx_palloc_block()函数分析
 释放内存
 注册cleanup
 内存池的物理结构
3. 一个例子
 代码
 如何编译
 运行结果
4. 小结
5. 致谢
0. 序
 
nginx对内存的管理由其自己实现的内存池结构ngx_pool_t来完成,本文重点叙述nginx的内存管理。
 
nginx内存管理相关文件:
(1) ./src/os/unix//.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//.c
封装创建/销毁内存池,从内存池分配空间等函数
 
.表示nginx-,本文为/usr/src/nginx-。
 
1. 内存池结构
nginx对内存的管理均统一完成,例如,在特定的生命周期统一建立内存池(如main函数系统启动初期即分配1024B大小的内存池),需要内存时统一分配内存池中的内存,在适当的时候释放内存池的内存(如关闭http链接时调用ngx_destroy_pool进行销毁)。
因此,开发者只需在需要内存时进行申请即可,不用过多考虑内存的释放等问题,大大提高了开发的效率。先看一下内存池结构。
 
ngx_pool_t结构
此处统一一下概念,内存池的数据块:即分配内存在这些数据块中进行,一个内存池可以有多一个内存池数据块。nginx的内存池结构如下。 
00048: typedef struct {
00049: u_char *last; //当前内存池分配到此处,即下一次分配从此处开始
00050: u_char *end; //内存池结束位置
00051: ngx_pool_t *next; //内存池里面有很多块内存,这些内存块就是通过该指针连成链表的
00052: ngx_uint_t failed; //内存池分配失败次数
00053: } ngx_pool_data_t; //内存池的数据块位置信息
00054:
00055:
00056: struct ngx_pool_s{ //内存池头部结构
00057: ngx_pool_data_t d; //内存池的数据块
00058: size_t max; //内存池数据块的最大值
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; //释放内存池的callback
00063: ngx_log_t *log; //日志信息
00064: };
其中,sizeof(ngx_pool_data_t)=16B,sizeof(ngx_pool_t)=40B。
,如下。
typedef struct ngx_module_s ngx_module_t;
typedef struct ngx_conf_s ngx_conf_t;
typedef struct ngx_cycle_s ngx_cycle_t;
typedef struct ngx_pool_s ngx_pool_t;
typedef struct ngx_chain_s ngx_chain_t;
typedef struct ngx_log_s ngx_log_t;
typedef struct ngx

nginx内存池详解 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数17
  • 收藏数0 收藏
  • 顶次数0
  • 上传人mh900965
  • 文件大小199 KB
  • 时间2017-12-01