diff options
Diffstat (limited to 'Zend/README.ZEND_MM')
-rw-r--r-- | Zend/README.ZEND_MM | 43 |
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. |