Bug #53454 [Opn->Csd]: Memory leak when using non-static class member as static one or inversely

From: Date: Thu, 02 Dec 2010 18:55:18 +0000
Subject: Bug #53454 [Opn->Csd]: Memory leak when using non-static class member as static one or inversely
References: 1  Groups: php.bugs 
Request: Send a blank email to php-bugs+get-156698@lists.php.net to get a copy of this message
Edit report at http://bugs.php.net/bug.php?id=53454&edit=1 ID: 53454 User updated by: hritter at e-onsoftware dot com Reported by: hritter at e-onsoftware dot com Summary: Memory leak when using non-static class member as static one or inversely -Status: Open +Status: Closed Type: Bug Package: Performance problem Operating System: Linux gentoo PHP Version: 5.2.14 Block user comment: N Private report: N New Comment: I am really confused, the leak was due to the PHP debugger I implemented. (No leak when test the bug without this debugger) Previous Comments: ------------------------------------------------------------------------ [2010-12-02 19:36:50] hritter at e-onsoftware dot com Description: ------------ I had some memory overflow errors. I logged the memory usage step by step and then I see a difference of 50Mo between two logs. In the method called between this two logs, I used a static class attribute as a non-static one (with $this). The modification on the attribute took effect but triggered an "Interoperability or Compatibility Notice". I fixed this error and I had a gain of 50 Mo!! I have the same bug with a non-static method used as a static method (with self::). I had a gain of 90Mo because this method was really far away in the code. It is a pretty harsh punishment for a compatibility error ;-) Test script: --------------- class LeakTester { private static $nTest = 0; public function Test() { $this->nTest++; echo $this->nTest."<br/>\n"; } } // ---> Test $oTest = new LeakTester(); $oTest->Test(); echo memory_get_usage()."<br/>\n"; // (1) $oTest->Test(); echo memory_get_usage()."<br/>\n"; // (2) > (1) Expected result: ---------------- (2) should be equal to (1) Actual result: -------------- (2) is really greater than (1) ------------------------------------------------------------------------ -- Edit this bug report at http://bugs.php.net/bug.php?id=53454&edit=1

« previous php.bugs (#156698) next »