nginx源码分析—内存池结构ngx_pool_t及内存管理

本文详细分析了nginx内存池结构ngx_pool_t,包括ngx_pool_t及其相关结构,内存池创建、销毁、重置、分配和释放内存的流程。通过一个实例展示了内存池的使用,并探讨了编译测试代码的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本博客( http://blog.csdn.net/livelylittlefish)贴出作者(阿波)相关研究、学习内容所做的笔记,欢迎广大朋友指正!

Content

0.

1. 内存池结构

1.1 ngx_pool_t结构

1.2 其他相关结构

1.3 ngx_pool_t的逻辑结构

2. 内存池操作

2.1 创建内存池

2.2 销毁内存池

2.3 重置内存池

2.4 分配内存

2.4.1 ngx_palloc()函数分析

2.4.2 ngx_palloc_block()函数分析

2.5 释放内存

2.6 注册cleanup

2.7 内存池的物理结构

3. 一个例子

3.1 代码

3.2 如何编译

3.3 运行结果

4. 小结

5. 致谢

0.

 

nginx对内存的管理由其自己实现的内存池结构ngx_pool_t来完成,本文重点叙述nginx的内存管理。

 

nginx内存管理相关文件:

(1) ./src/os/unix/ngx_alloc.h/.c

  • 内存相关的操作,封装了最基本的内存分配函数
  • free/malloc/memalign/posix_memalign,分别被封装为ngx_freengx_alloc/ngx_calloc, ngx_memalign
    • ngx_alloc:封装malloc分配内存
    • ngx_calloc:封装malloc分配内存,并初始化空间内容为0
    • ngx_memalign:返回基于一个指定alignment的大小为size的内存空间,且其地址为alignment的整数倍,alignment2的幂。

(2) ./src/core/ngx_palloc.h/.c

  • 封装创建/销毁内存池,从内存池分配空间等函数

 

评论 39
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值