comparison src/core/ngx_palloc.c @ 2917:62010fa37ead

try to reuse last 4 free large allocation links this fixes a pool growing for multi-requests keepalive connections
author Igor Sysoev <igor@sysoev.ru>
date Wed, 03 Jun 2009 13:57:28 +0000
parents 3a8a53c0c42f
children cb7d05c097db
comparison
equal deleted inserted replaced
2916:759ff3e380e3 2917:62010fa37ead
212 212
213 static void * 213 static void *
214 ngx_palloc_large(ngx_pool_t *pool, size_t size) 214 ngx_palloc_large(ngx_pool_t *pool, size_t size)
215 { 215 {
216 void *p; 216 void *p;
217 ngx_uint_t n;
217 ngx_pool_large_t *large; 218 ngx_pool_large_t *large;
218 219
219 p = ngx_alloc(size, pool->log); 220 p = ngx_alloc(size, pool->log);
220 if (p == NULL) { 221 if (p == NULL) {
221 return NULL; 222 return NULL;
223 }
224
225 n = 0;
226
227 for (large = pool->large; large; large = large->next) {
228 if (large->alloc == NULL) {
229 large->alloc = p;
230 return p;
231 }
232
233 if (n++ > 3) {
234 break;
235 }
222 } 236 }
223 237
224 large = ngx_palloc(pool, sizeof(ngx_pool_large_t)); 238 large = ngx_palloc(pool, sizeof(ngx_pool_large_t));
225 if (large == NULL) { 239 if (large == NULL) {
226 ngx_free(p); 240 ngx_free(p);