summaryrefslogtreecommitdiff
path: root/Zend/README.ZEND_MM
diff options
context:
space:
mode:
Diffstat (limited to 'Zend/README.ZEND_MM')
-rw-r--r--Zend/README.ZEND_MM43
1 files changed, 43 insertions, 0 deletions
diff --git a/Zend/README.ZEND_MM b/Zend/README.ZEND_MM
new file mode 100644
index 0000000..ff882e5
--- /dev/null
+++ b/Zend/README.ZEND_MM
@@ -0,0 +1,43 @@
+Zend Memory Manager
+===================
+
+General:
+--------
+
+The goal of the new memory manager (available since PHP 5.2) is to reduce memory
+allocation overhead and speedup memory management.
+
+The new manager's "configure" has no "--disable-zend-memory-manager" option,
+but it has "--enable-malloc-mm" instead. It is enabled by default in DEBUG
+build and disabled by default in RELEASE build. When enabled it allows selecting
+between malloc and emalloc at runtime so you can use internal and external memory
+debuggers without recompilation.
+
+Debugging:
+----------
+
+Normal:
+
+ $ sapi/cli/php -r 'leak();'
+
+Zend MM disabled:
+
+ $ USE_ZEND_ALLOC=0 valgrind --leak-check=full sapi/cli/php -r 'leak();'
+
+Shared extensions:
+------------------
+
+Since PHP 5.3.11 it is possible to prevent shared extensions from unloading so
+that valgrind can correctly track the memory leaks in shared extensions. For
+this there is the ZEND_DONT_UNLOAD_MODULES environment variable. If set, then
+DL_UNLOAD() is skipped during the shutdown of shared extensions.
+
+
+Tweaking:
+---------
+
+The Zend MM can be tweaked using ZEND_MM_MEM_TYPE and ZEND_MM_SEG_SIZE environment
+variables. Default values are "malloc" and "256K". Dependent on target system you
+can also use "mmap_anon", "mmap_zero" and "win32" storage managers.
+
+ $ ZEND_MM_MEM_TYPE=mmap_anon ZEND_MM_SEG_SIZE=1M sapi/cli/php ..etc.