#33595 [Opn->Asn]: Memory leak

From: Date: Thu, 07 Jul 2005 12:11:49 +0000
Subject: #33595 [Opn->Asn]: Memory leak
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-81523@lists.php.net to get a copy of this message
 ID:               33595
 Updated by:       sniper@php.net
 Reported By:      rodricg at sellingsource dot com
-Status:           Open
+Status:           Assigned
 Bug Type:         Class/Object related
 Operating System: Linux
 PHP Version:      5.0.4
-Assigned To:      
+Assigned To:      dmitry
 New Comment:

Dmitry, is it different or not?



Previous Comments:
------------------------------------------------------------------------

[2005-07-07 03:49:52] rodricg at sellingsource dot com

Distinctly different than bug #33487 this only occurs when the object
contains a recursive reference.  Add 
echo number_format(memory_get_usage());
to the end of the script and you get 346,360,656.  Then comment out
$this->parent = $parent and run again to get 53,832.  I suspect the
internal reference is not properly invalidated upon the destruction of
class A.  This would keep the ref count > 0 and foil garbage
collection.  Unless I am missing something....

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

[2005-07-07 01:03:23] tony2001@php.net

Please do not submit the same bug more than once. An existing
bug report already describes this very problem. Even if you feel
that your issue is somewhat different, the resolution is likely
to be the same. 

Thank you for your interest in PHP.

See bug #33487.

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

[2005-07-06 23:44:25] rodricg at sellingsource dot com

Description:
------------
Objects with recursive references leak memory. 
PHP 5.1.0b2 exhibits the same behavior. 

Reproduce code:
---------------
<?php
class A {
    function __construct () {
        $this->b = new B($this);
    }
}

class B {
    function __construct ($parent = NULL) {
        $this->parent = $parent;
    }
}

for ($i = 0 ; $i < 1000000 ; $i++) {
    $a = new A();
}
?>

Expected result:
----------------
Memory usage should remain constant. 

Actual result:
--------------
Memory usage quickly increases to consume several hundred 
megabytes. 


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


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


Thread (22 messages)

« previous php.bugs (#81523) next »