Apache内存池使用过程的分析

本文详细介绍了Apache内存池的使用流程,包括创建、内存分配及销毁过程。apr_pool_create函数用于创建内存池,apr_palloc则是内存分配的主要函数。在内存池销毁时,会先递归释放所有子内存池,然后释放自身占用的内存。
摘要由CSDN通过智能技术生成
毫无疑问,内存池使用的总的流程是:首先创建一个内存池,在创建的过程中指定它的父内存池,并需要将其挂接到对应的内存池树层次结构上;其次,使用内存池,刚开始使用时内存池中除了本身结点的一点空间外,没有其他的空间了,如果需要的内存较大,则需要从分配子中分配内存,并挂接到内存池的active 链表上,然后直接使用;最后,内存池的销毁,内存池的销毁同时内存也都会重新释放到分配子中,由分配子进行管理。
下面从整个过程详细介绍一下内存的全流程使用,主要是以Apache的main函数中对内存的使用为例。
(1)apr_pool_create函数
main函数中最开始涉及到内存使用的地方在init_process函数中,在函数中,使用内存时,调用的便是apr_pool_create(&cntx, NULL),以此创建第一个全局内存池cntx,我们来看apr_pool_create函数的工作过程:
apr_pool_create实际调用的是apr_pool_create_ex函数来创建,继续往下,
1.首先判断创建的内存池有没有设定父内存池,如果没有则默认的将其设置为其父内存池为根内存池,即全局内存池。
2.然后,函数首先创建apr_pool_t结构,其方法是首先通过分配子分配一个最小内存空间为8K的内存结点,然后将apr_pool_t结构放在apr_memnode_t结构的下面,并对各个字段初始化。结构如下:
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值