#45954 [Bgs]: memory leak with unset(array)

2008-09-02 Thread mail at milianw dot de
 ID:   45954
 User updated by:  mail at milianw dot de
 Reported By:  mail at milianw dot de
 Status:   Bogus
 Bug Type: Performance problem
 Operating System: *
 PHP Version:  5.2.6
 New Comment:

Yes, thank you. Thats an explanation which clarifies things for me.

Though one last thing: I was not speaking about a memory leak which
persists after the process is finished, but one while the process is
running. I was interested because while optimizing GeSHi I searched
for ways to reduce the memory consumption / memory peaks and spotted
this behaviour.

You can close this bug. Thanks again.


Previous Comments:


[2008-09-02 08:44:04] [EMAIL PROTECTED]

The internal memory manager is keeping tabs of the memory and will
reuse 
it again if there is a memory allocation that it can fit in the block.

You can use valgrind and see that the memory is in fact free'd when the

request ends.



[2008-09-01 17:48:18] mail at milianw dot de

So there is simply no way at all to delete / free / unset variables in
PHP? But why does it work perfectly (i.e. like I imagine it should) when
I unset a string, even a very large one? That one frees the memory
instantaneously. But not so for arrays.

I simply cannot see the reasoning behind this. When a programmer calls
unset he seems to know that this very variable can be freed, or not? So
why do we need to wait for a GC to step in and do the actual cleanup? As
far as my limited knowledge goes manual delete/free is compatible with a
GC, or not? Or is it only possible to free simple strings, ints etc. but
not arrays?

Take this code:


http://bugs.php.net/bug.php?id=41713 which tells a
similar story, but it should be fixed as far as the bug report tells.
Additionally it was Windows only yet I spotted the described behaviour
first on a Linux machine.






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



#45954 [Bgs]: memory leak with unset(array)

2008-09-01 Thread mail at milianw dot de
 ID:   45954
 User updated by:  mail at milianw dot de
 Reported By:  mail at milianw dot de
 Status:   Bogus
 Bug Type: Performance problem
 Operating System: *
 PHP Version:  5.2.6
 New Comment:

So there is simply no way at all to delete / free / unset variables in
PHP? But why does it work perfectly (i.e. like I imagine it should) when
I unset a string, even a very large one? That one frees the memory
instantaneously. But not so for arrays.

I simply cannot see the reasoning behind this. When a programmer calls
unset he seems to know that this very variable can be freed, or not? So
why do we need to wait for a GC to step in and do the actual cleanup? As
far as my limited knowledge goes manual delete/free is compatible with a
GC, or not? Or is it only possible to free simple strings, ints etc. but
not arrays?

Take this code:


http://bugs.php.net/bug.php?id=41713 which tells a
similar story, but it should be fixed as far as the bug report tells.
Additionally it was Windows only yet I spotted the described behaviour
first on a Linux machine.






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



#45954 [NEW]: memory leak with unset(array)

2008-08-30 Thread mail at milianw dot de
From: mail at milianw dot de
Operating system: linux, windows
PHP version:  5.2.6
PHP Bug Type: Performance problem
Bug description:  memory leak with unset(array)

Description:

When you setup an array and unset() it afterwards, not all memory is
freed. I've run the code below on various PHP versions, including 5.2.6
(via Xampp) on Linux and Windows and always get output like:

startup:64296
array setup:13789672
unsetted array: 129284

The end value is more than twice as large as the start value.

Also interestingly is that low values in the for loop [e.g. for($i = 0; $i
< 1; ++$i)] result in outputs like

startup:   64296
array setup:64864
unsetted array: 64864

Could it be that unset() relies on the Garbage Collector to do the work
instead of really destroying the variables? But then I find it strange that
even if I put a sleep(10) after the unset I still get the same outputs for
"unsetted array".

Reproduce code:
---
http://bugs.php.net/bug.php?id=41713 which tells a similar
story, but it should be fixed as far as the bug report tells. Additionally
it was Windows only yet I spotted the described behaviour first on a Linux
machine.


-- 
Edit bug report at http://bugs.php.net/?id=45954&edit=1
-- 
Try a CVS snapshot (PHP 5.2): 
http://bugs.php.net/fix.php?id=45954&r=trysnapshot52
Try a CVS snapshot (PHP 5.3): 
http://bugs.php.net/fix.php?id=45954&r=trysnapshot53
Try a CVS snapshot (PHP 6.0): 
http://bugs.php.net/fix.php?id=45954&r=trysnapshot60
Fixed in CVS: http://bugs.php.net/fix.php?id=45954&r=fixedcvs
Fixed in release: 
http://bugs.php.net/fix.php?id=45954&r=alreadyfixed
Need backtrace:   http://bugs.php.net/fix.php?id=45954&r=needtrace
Need Reproduce Script:http://bugs.php.net/fix.php?id=45954&r=needscript
Try newer version:http://bugs.php.net/fix.php?id=45954&r=oldversion
Not developer issue:  http://bugs.php.net/fix.php?id=45954&r=support
Expected behavior:http://bugs.php.net/fix.php?id=45954&r=notwrong
Not enough info:  
http://bugs.php.net/fix.php?id=45954&r=notenoughinfo
Submitted twice:  
http://bugs.php.net/fix.php?id=45954&r=submittedtwice
register_globals: http://bugs.php.net/fix.php?id=45954&r=globals
PHP 4 support discontinued:   http://bugs.php.net/fix.php?id=45954&r=php4
Daylight Savings: http://bugs.php.net/fix.php?id=45954&r=dst
IIS Stability:http://bugs.php.net/fix.php?id=45954&r=isapi
Install GNU Sed:  http://bugs.php.net/fix.php?id=45954&r=gnused
Floating point limitations:   http://bugs.php.net/fix.php?id=45954&r=float
No Zend Extensions:   http://bugs.php.net/fix.php?id=45954&r=nozend
MySQL Configuration Error:http://bugs.php.net/fix.php?id=45954&r=mysqlcfg