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

 

 

一、內存池概述

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

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

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

 

網友評論