internals:zend_mm
Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
internals:zend_mm [2013/01/22 13:20] krakjoe [Zend MM] |
internals:zend_mm [2017/09/22 13:28] (current) |
||
---|---|---|---|
Line 17: | Line 17: | ||
PHP is written entirely in C. In C, the programmer is responsible for the allocation and release of memory during runtime. | PHP is written entirely in C. In C, the programmer is responsible for the allocation and release of memory during runtime. | ||
- | PHP has very specific requirements for management of memory and many modes of execution; all sharing | + | PHP has very specific requirements for management of memory and many modes of execution; all sharing |
The memory manager in PHP, named Zend MM, facilitates these requirements in the same way, whatever the mode of execution, whatever the code. | The memory manager in PHP, named Zend MM, facilitates these requirements in the same way, whatever the mode of execution, whatever the code. | ||
Line 27: | Line 27: | ||
large: when allocating large blocks of memory, it is important that the manager minimizes wastage. | large: when allocating large blocks of memory, it is important that the manager minimizes wastage. | ||
- | The MM provides the following (basic) functions: | + | The developer makes allocations that have two distinct life cycles: |
+ | |||
+ | request: the most common type of allocation made; the developer requires the memory to service the current request | ||
+ | |||
+ | persistent: | ||
+ | |||
+ | The MM provides the following (per request) functions: | ||
void* | void* | ||
Line 34: | Line 40: | ||
void | void | ||
- | They all share prototype and functionality with the standard C implementation, | + | They all share prototype and functionality with the standard C implementation, |
- | Zend provides the following persistence functions: | + | Zend provides the following |
void* pemalloc(size_t size, zend_bool persistent); | void* pemalloc(size_t size, zend_bool persistent); | ||
Line 45: | Line 51: | ||
Persistent memory is not optimized, or tracked by the implementation, | Persistent memory is not optimized, or tracked by the implementation, | ||
- | The following diagrams and explanations provide insight into how and why Zend MM works the way it does. | + | The following diagrams and explanations provide insight into how and why Zend MM manages |
===== Struct zend_mm_heap ===== | ===== Struct zend_mm_heap ===== | ||
<code c> | <code c> |
internals/zend_mm.1358860835.txt.gz · Last modified: 2017/09/22 13:28 (external edit)