ngx——内存池管理

1. 有哪些内存池

init_cycle.pool : 用于初始化时使用,初始化后一定被释放

   196 main(int argc, char *const *argv)    253     init_cycle.pool = ngx_create_pool(1024, log);    292     cycle = ngx_init_cycle(&init_cycle); 

cycle->pool : 伴随整个工作周期,直到 重新加载配置
conf->temp_pool : 当配置解析完后,释放
conf->pool : 等于 cycle->pool
ngx_temp_pool : 30s后释放

    38 ngx_cycle_t *     39 ngx_init_cycle(ngx_cycle_t *old_cycle)     40 {     69     pool = ngx_create_pool(NGX_CYCLE_POOL_SIZE, log);     81     cycle->pool = pool;     260     conf.temp_pool = ngx_create_pool(NGX_CYCLE_POOL_SIZE, log);    269     conf.pool = pool;     767     ngx_destroy_pool(conf.temp_pool);      778     if (ngx_temp_pool == NULL) {    779         ngx_temp_pool = ngx_create_pool(128, cycle->log);    788         if (ngx_array_init(&ngx_old_cycles, ngx_temp_pool, n,    789                            sizeof(ngx_cycle_t *))    790             != NGX_OK)    791         {    792             exit(1);    793         }   797         ngx_cleaner_event.handler = ngx_clean_old_cycles;    801     }    802    803     ngx_temp_pool->log = cycle->log;    804    805     old = ngx_array_push(&ngx_old_cycles);    806     if (old == NULL) {    807         exit(1);    808     }    809     *old = old_cycle;    811     if (!ngx_cleaner_event.timer_set) {    812         ngx_add_timer(&ngx_cleaner_event, 30000);    813         ngx_cleaner_event.timer_set = 1;    814     }    815    816     return cycle; 
  1365 static void   1366 ngx_clean_old_cycles(ngx_event_t *ev)   1367 {   1379     cycle = ngx_old_cycles.elts;   1380     for (i = 0; i < ngx_old_cycles.nelts; i++) {   1405         ngx_destroy_pool(cycle[i]->pool);   1407     }   1415         ngx_destroy_pool(ngx_temp_pool);