logo       
Google Custom Search
    AddThis Social Bookmark Button
-->

cvs: ZendEngine2 / zend_alloc.c: msg#00057

Subject: cvs: ZendEngine2 / zend_alloc.c
dmitry          Thu Oct 25 07:32:58 2007 UTC

  Modified files:              
    /ZendEngine2        zend_alloc.c 
  Log:
  Added ability to control memory consumption between request using 
ZEND_MM_COMPACT environment variable
  
  
http://cvs.php.net/viewvc.cgi/ZendEngine2/zend_alloc.c?r1=1.204&r2=1.205&diff_format=u
Index: ZendEngine2/zend_alloc.c
diff -u ZendEngine2/zend_alloc.c:1.204 ZendEngine2/zend_alloc.c:1.205
--- ZendEngine2/zend_alloc.c:1.204      Sat Sep 29 10:37:39 2007
+++ ZendEngine2/zend_alloc.c    Thu Oct 25 07:32:58 2007
@@ -18,7 +18,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: zend_alloc.c,v 1.204 2007/09/29 10:37:39 dmitry Exp $ */
+/* $Id: zend_alloc.c,v 1.205 2007/10/25 07:32:58 dmitry Exp $ */
 
 #include "zend.h"
 #include "zend_alloc.h"
@@ -426,6 +426,7 @@
        size_t              free_bitmap;
        size_t              large_free_bitmap;
        size_t              block_size;
+       size_t              compact_size;
        zend_mm_segment    *segments_list;
        zend_mm_storage    *storage;
        size_t                          real_size;
@@ -1065,6 +1066,7 @@
 
        heap->storage = storage;
        heap->block_size = block_size;
+       heap->compact_size = 0;
        heap->segments_list = NULL;
        zend_mm_init(heap);
 # if ZEND_MM_CACHE_STAT
@@ -1116,6 +1118,7 @@
        char *mem_type = getenv("ZEND_MM_MEM_TYPE");
        char *tmp;
        const zend_mm_mem_handlers *handlers;
+       zend_mm_heap *heap;
 
        if (mem_type == NULL) {
                i = 0;
@@ -1147,7 +1150,16 @@
                seg_size = ZEND_MM_SEG_SIZE;
        }
 
-       return zend_mm_startup_ex(handlers, seg_size, ZEND_MM_RESERVE_SIZE, 0, 
NULL);
+       heap = zend_mm_startup_ex(handlers, seg_size, ZEND_MM_RESERVE_SIZE, 0, 
NULL);
+       if (heap) {
+               tmp = getenv("ZEND_MM_COMPACT");
+               if (tmp) {
+                       heap->compact_size = zend_atoi(tmp, 0);
+               } else {
+                       heap->compact_size = 2 * 1024 * 1024;
+               }
+       }
+       return heap;
 }
 /* }}} */
 
@@ -1603,7 +1615,10 @@
                        free(heap);
                }
        } else {
-               storage->handlers->compact(storage);
+               if (heap->compact_size &&
+                   heap->real_peak > heap->compact_size) {
+                       storage->handlers->compact(storage);
+               }
                heap->segments_list = NULL;
                zend_mm_init(heap);
                heap->real_size = 0;

-- 
Zend Engine CVS Mailing List (http://cvs.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php




<Prev in Thread] Current Thread [Next in Thread>