Edit report at http://bugs.php.net/bug.php?id=55033&edit=1
ID: 55033 Updated by: [email protected] Reported by: rodney dot rehm at medialize dot de Summary: Memory Leak in magic method __get() [Zend Memory Manager] Status: Bogus Type: Bug Package: Performance problem Operating System: Mac OS X 10.6.7 PHP Version: 5.3.6 Block user comment: N Private report: N New Comment: Hi, this behavior is some needs to be changed, I'm not ignoring your point, just closed the report since it has been already reported. Thanks. Previous Comments: ------------------------------------------------------------------------ [2011-06-11 21:45:56] rodney dot rehm at medialize dot de Well, I figure since Bug #48197 is still open, the issue will be resolved eventually. If you're facing memory problems because of __get() you might want to sporadically clone the object: $object = clone $object; The wasted memory is not cloned. Beware that you are trading memory for runtime. Only consider this if you are facing memory issues or runtime is not an issue. ------------------------------------------------------------------------ [2011-06-11 17:42:22] rodney dot rehm at medialize dot de Just to get this straight. This is not a bug, it's expected behavior. Anything returned from a magic method is internally handled as a copy. That means that anything a magic methods returns, even if it's a reference to another object, is kept in memory. That is, until the $object the magic methods were invoked on, is unset(). Are you kidding me? Not a bug? Where is this not a bug? A note on this topic wouldn't harm the docs, you know? ------------------------------------------------------------------------ [2011-06-11 17:02:32] [email protected] A copy of returned variable is done. ------------------------------------------------------------------------ [2011-06-11 17:01:14] rodney dot rehm at medialize dot de What exactly do you mean by "separating return from __get()"? The memory is pumped regardless of how I return (value, reference). How am I supposed to "separate" here? ------------------------------------------------------------------------ [2011-06-11 16:48:14] [email protected] There is no memleak, what happens is that the return from __get() needs to be separated. See bug #48197 ------------------------------------------------------------------------ The remainder of the comments for this report are too long. To view the rest of the comments, please view the bug report online at http://bugs.php.net/bug.php?id=55033 -- Edit this bug report at http://bugs.php.net/bug.php?id=55033&edit=1
