為了自身使用的方便,Nginx封裝了很多有用的數(shù)據(jù)結(jié)構(gòu),比如ngx_str_t ,ngx_array_t, ngx_pool_t 等等,對于內(nèi)存池,nginx設(shè)計(jì)的十分精煉,值得我們學(xué)習(xí),本文介紹內(nèi)存池基本知識,nginx內(nèi)存池的結(jié)構(gòu)和關(guān)鍵代碼,并用一個實(shí)際的代碼例子作了進(jìn)一步的講解

 

 

一、內(nèi)存池概述

    內(nèi)存池是在真正使用內(nèi)存之前,預(yù)先申請分配一定數(shù)量的、大小相等(一般情況下)的內(nèi)存塊留作備用。當(dāng)有新的內(nèi)存需求時,就從內(nèi)存池中分出一部分內(nèi)存塊,若內(nèi)存塊不夠用時,再繼續(xù)申請新的內(nèi)存。

   內(nèi)存池的好處有減少向系統(tǒng)申請和釋放內(nèi)存的時間開銷,解決內(nèi)存頻繁分配產(chǎn)生的碎片,提示程序性能,減少程序員在編寫代碼中對內(nèi)存的關(guān)注等

   目前一些常見的內(nèi)存池實(shí)現(xiàn)方案有STL中的內(nèi)存分配區(qū),boost中的object_pool,nginx中的ngx_pool_t,google的開源項(xiàng)目TCMalloc等

 

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式