Memory Pool

Valentin V. Bartenev vbart at nginx.com
Wed Apr 9 10:24:35 UTC 2014


On Wednesday 09 April 2014 04:55:42 nginxsantos wrote:
> Nginx when it accepts a connection, it creates a memory pool for that
> connection (allocating from heap). After which further memory requirement
> for that connection will be allocated from that pool. This is good. 
> But, why don't we pre create the memory pools depending upon the number of
> connections and use that pool. In the current approach if some connections
> are coming up going down., we will be allocating and freeing to heap
> frequently.
> 
> Can someone please clarify why this has been done like this?
> 

System allocators are usually smart enough to not transform every malloc()
into syscall.

One of the main benefits provided by these pools is convenient memory
management for C program that allows to not care much about corresponding 
free() calls and memory leaks.

So usually every pool is attached to some object with a clear life cycle,
like a request or a connection.

  wbr, Valentin V. Bartenev



More information about the nginx mailing list