內(nèi)存控制的好福澡,程序就穩(wěn)定,一個(gè)好的內(nèi)存設(shè)計(jì)驹马,為一個(gè)牛逼的發(fā)動(dòng)機(jī)提供資源革砸。
使用內(nèi)存的時(shí)候,從ngx_pool_t
中獲取內(nèi)存糯累。
不使用的時(shí)候算利,只需要銷毀ngx_pool_t
對(duì)象即可,相關(guān)聯(lián)的內(nèi)存都被釋放完畢泳姐。
也就是說(shuō)ngx_pool_t
對(duì)象就算一個(gè)內(nèi)存的管家效拭,你需要用的時(shí)候向它登記就行,不用操心申請(qǐng)啊胖秒,釋放啊等操作缎患,很方便。
struct ngx_pool_s {
ngx_pool_data_t d;
size_t max;
ngx_pool_t *current;
ngx_chain_t *chain;
ngx_pool_large_t *large;
ngx_pool_cleanup_t *cleanup;
ngx_log_t *log;
};
ngx_create_pool(size_t size, ngx_log_t *log)
創(chuàng)建一個(gè)初始節(jié)點(diǎn)大小為size
的pool
阎肝。并且size的大小必須小于等于NGX_MAX_ALLOC_FROM_POOL
挤渔,且必須大于sizeof(ngx_pool_t)
NGX_MAX_ALLOC_FROM_POOL
大小為 (ngx_pagesize - 1),在x86上,ngx_pagesize
大小為4096盗痒。
之所以是4096蚂蕴,是因?yàn)閷ぶ讽?yè)面大小是4096低散,這個(gè)數(shù)值的設(shè)定可以照顧到大多數(shù)情況的內(nèi)存使用情景,太大和太小都不是很適合骡楼。至于為何是這個(gè)數(shù)熔号,應(yīng)該是和處理器架構(gòu)有關(guān)系。
size的大小必須小于等于NGX_MAX_ALLOC_FROM_POOL鸟整,且必須大于sizeof(ngx_pool_t)引镊。因?yàn)榇罅藢ぶ穼げ坏桨装桌速M(fèi)空間。
nginx內(nèi)存結(jié)構(gòu)圖