note 22089 deleted from language.references.return by sniper
| From: | sniper@php.net | Date: | Tue, 30 Sep 2003 01:26:12 +0000 |
| Subject: | note 22089 deleted from language.references.return by sniper | ||
| References: | 1 | Groups: | php.notes |
| Request: | Send a blank email to php-notes+get-57353@lists.php.net to get a copy of this message | ||
Note Submitter: shelby_at_downloadfast_dot_com
----
Regarding comment above posted on 13-Sep-2001 12:42, the likely reason PHP memory management
suffered was because you probably ended up with circular references, which cause memory leaks. The
leaks are cleaned up at thread close, but for complex long running thread, leaks could become too
large. This is fairly undocumented (spread out across various threads in mailing list discussions).
A circular reference is where a parent references it's child somewhere in it's hierarchy
of children, and that child references that parent, or any of it's parents or children. This is
a reference lock and there is no way the reference count will every go to 0 for the involved
hierarchy and thus memory is not freed in PHP's normal reference counting memory management. A
garbage collection scheme might solve this, but even then very difficult in complex scenarios. In
essense thread termination, a dumb "garbage collection" (all memory recovered) occurs for
that thread's memory use.