Memory
Management
Resource management is a crucial issue, especially in
server software. One of the most valuable resources is
memory, and memory management should be handled with extreme
care. Memory management has been partially abstracted in
Zend, and you should stick to this abstraction for obvious
reasons: Due to the abstraction, Zend gets full control over
all memory allocations. Zend is able to determine whether a
block is in use, automatically freeing unused blocks and
blocks with lost references, and thus prevent memory leaks.
The functions to be used are described in the following
table:
emalloc(),
estrdup(),
estrndup(),
ecalloc(), and
erealloc() allocate internal memory;
efree() frees these previously allocated blocks. Memory
handled by the
e*() functions is
considered local to the current process and is discarded as
soon as the script executed by this process is terminated.
警告 |
To allocate resident memory that survives
termination of the current script, you can use malloc() and free(). This should only be done with
extreme care, however, and only in conjunction with
demands of the Zend API; otherwise, you risk memory
leaks.
|
Zend also features a thread-safe resource manager to provide
better native support for multithreaded Web servers. This
requires you to allocate local structures for all of your
global variables to allow concurrent threads to be run.
Because the thread-safe mode of Zend was not finished back
when this was written, it is not yet extensively covered
here.