nginx学习第四天
2018-04-24 本文已影响12人
ant_1024
ngx_pool_t
ngx_pool_t是非常重要的而数据结构
1.对内存的管理。总是从一个ngx_pool_t的对象中获取内存,在最终的某个时刻销毁这个ngx_pool_t对象,所有这些内存都被释放了。
2.使用场景。对于ngx处理的每个http request,nginx会生成一个ngx_pool_t对象与这个http request 关联,所有处理过程中需要申请的资源都从这个ngx_pool_t对象中获取,当这个http request处理完成后,所有的处理过程中申请的资源都随着关联的ngx_pool_t对象销毁而释放
ngx_array_t
ngx_array_t是nginx内部使用的数组结构。
1.ngx_array_t相关操作的函数
p 数组分配内存使用的内存池;
n 数组的初始容量大小,既可以在不扩容的情况下最多可以容纳的元素个数
size 单个元素的大小,单位是字节。
2.如果一个数组对象分配在堆上,那么调用ngx_array_destroy销毁后,如果再次使用,就可以调用此函数。
3.如果一个数组对象分配在栈上,那么就需要调用吃函数之前进行初始化工作后才可以使用
注意:
1.销毁数对象,释放对应的内存池,调用该函数以后数组对象上字段值并没有被清零。所以现在字段有意义,但是这个对象也不应该被使用,除非使用ngx_array_ini函数
2.数组扩容时,旧的内存不会被释放,会造成内存的浪费。避免多次扩容,造成内存浪费