ngx——内存池管理
2022/4/29 7:14:21
本文主要是介绍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);
这篇关于ngx——内存池管理的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-26Mybatis官方生成器资料详解与应用教程
- 2024-11-26Mybatis一级缓存资料详解与实战教程
- 2024-11-26Mybatis一级缓存资料详解:新手快速入门
- 2024-11-26SpringBoot3+JDK17搭建后端资料详尽教程
- 2024-11-26Springboot单体架构搭建资料:新手入门教程
- 2024-11-26Springboot单体架构搭建资料详解与实战教程
- 2024-11-26Springboot框架资料:新手入门教程
- 2024-11-26Springboot企业级开发资料入门教程
- 2024-11-26SpringBoot企业级开发资料详解与实战教程
- 2024-11-26Springboot微服务资料:新手入门全攻略