php-src/Zend/README.ZEND_MM

44 lines
1.3 KiB
Plaintext
Raw Normal View History

2007-07-19 21:57:06 +08:00
Zend Memory Manager
===================
2007-07-19 21:57:06 +08:00
General:
--------
2007-07-19 21:57:06 +08:00
The goal of the new memory manager (available since PHP 5.2) is to reduce memory
allocation overhead and speedup memory management.
2007-07-19 21:57:06 +08:00
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
2007-07-19 21:57:06 +08:00
between malloc and emalloc at runtime so you can use internal and external memory
debuggers without recompilation.
2007-07-19 21:57:06 +08:00
Debugging:
----------
2007-07-19 21:57:06 +08:00
Normal:
2007-07-19 21:57:06 +08:00
$ sapi/cli/php -r 'leak();'
Zend MM disabled:
$ USE_ZEND_ALLOC=0 valgrind --leak-check=full sapi/cli/php -r 'leak();'
Shared extensions:
------------------
2012-03-07 02:34:10 +08:00
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.
2007-07-19 21:57:06 +08:00
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.