Bug #55033 [Opn->Bgs]: Memory Leak in magic method __get() [Zend Memory Manager]

From: Date: Sat, 11 Jun 2011 14:48:14 +0000
Subject: Bug #55033 [Opn->Bgs]: Memory Leak in magic method __get() [Zend Memory Manager]
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-161308@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=55033&edit=1

 ID:                 55033
 Updated by:         felipe@php.net
 Reported by:        rodney dot rehm at medialize dot de
 Summary:            Memory Leak in magic method __get() [Zend Memory
                     Manager]
-Status:             Open
+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:

There is no memleak, what happens is that the return from __get() needs to be separated.
See bug #48197


Previous Comments:
------------------------------------------------------------------------
[2011-06-11 14:40:52] rodney dot rehm at medialize dot de

Description:
------------
For some reason values returned by __get() aren't released from memory.

$ php memory.php      # (without --debug)
0.0096 seconds and 1.3461 MB for 10000 accessing known property

$ php memory.php      # (with --debug)
0.0317 seconds and 2.6435 MB for 10000 accessing known property

$ export USE_ZEND_ALLOC=0
$ php memory.php      # (with --debug)
0.0267 seconds and 0.0000 MB for 10000 accessing known property


since disabling Zend Memory Manager solved the issue, the valgrind log is pretty much useless, thus
not attached.

Test script:
---------------
<?php

class Memleak
{
    public function __get($name)
    {
        return "hello world";
    }
}

$iterations = 10000;
$foo = new Memleak();

$start = microtime(true);
$mem = memory_get_usage();

for ($i=0; $i < $iterations; $i++) {
    $foo->{'bar' . $i};
}

$_mem = memory_get_usage();
$_start = microtime(true);
printf("%0.4f seconds and %0.4f MB for %d accessing known property\n", $_start - $start,
($_mem - $mem) / 1024 / 1024, $iterations);

?>

Expected result:
----------------
0.0099 seconds and 0.0000 MB for 10000 accessing known property

Actual result:
--------------
0.0099 seconds and 1.3460 MB for 10000 accessing known property


------------------------------------------------------------------------



-- 
Edit this bug report at http://bugs.php.net/bug.php?id=55033&edit=1


Thread (7 messages)

« previous php.bugs (#161308) next »