Bug #60937 [Nab]: Memory leak on unserialize for nested objects
| From: | npm at nuestrared dot com | Date: | Wed, 01 Feb 2012 14:56:10 +0000 |
| Subject: | Bug #60937 [Nab]: Memory leak on unserialize for nested objects | ||
| References: | 1 | Groups: | php.bugs |
| Request: | Send a blank email to php-bugs+get-167035@lists.php.net to get a copy of this message | ||
Edit report at https://bugs.php.net/bug.php?id=60937&edit=1
ID: 60937
User updated by: npm at nuestrared dot com
Reported by: npm at nuestrared dot com
Summary: Memory leak on unserialize for nested objects
Status: Not a bug
Type: Bug
Package: Performance problem
Operating System: Debian Linux
PHP Version: 5.4SVN-2012-01-31 (snap)
Block user comment: N
Private report: N
New Comment:
Hi, I have updated the object on the script and force the use of
gc_collect_cycles() after each iteration. However, there is an increase of
4980736 bytes, after 100 runs, it doesn't happen with every object, but it does
with this particular one. Also the increase is not with every iteration but
every couple of iterations, until it gets to a maximum, in this case the 4980736
bytes. Let me know if to open a different bug.
The updated script at:
http://dl.dropbox.com/u/7170408/unserialize_memleak.php
The output of the script:
Iteration 0 Start Mem 786432 Cicle Mem 3145728 Diff 2359296
Iteration 1 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 2 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 3 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 4 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 5 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 6 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 7 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 8 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 9 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 10 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 11 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 12 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 13 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 14 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 15 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 16 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 17 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 18 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 19 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 20 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 21 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 22 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 23 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 24 Start Mem 786432 Cicle Mem 5505024 Diff 4718592
Iteration 25 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 26 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 27 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 28 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 29 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 30 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 31 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 32 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 33 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 34 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 35 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 36 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 37 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 38 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 39 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 40 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 41 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 42 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 43 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 44 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 45 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 46 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 47 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 48 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 49 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 50 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 51 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 52 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 53 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 54 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 55 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 56 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 57 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 58 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 59 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 60 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 61 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 62 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 63 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 64 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 65 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 66 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 67 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 68 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 69 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 70 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 71 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 72 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 73 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 74 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 75 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 76 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 77 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 78 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 79 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 80 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 81 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 82 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 83 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 84 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 85 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 86 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 87 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 88 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 89 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 90 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 91 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 92 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 93 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 94 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 95 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 96 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 97 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 98 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Iteration 99 Start Mem 786432 Cicle Mem 5767168 Diff 4980736
Done.
Start Mem 786432 End Mem 5767168 Final Diff 4980736
Previous Comments:
------------------------------------------------------------------------
[2012-02-01 03:21:47] laruence@php.net
Thank you for taking the time to write to us, but this is not
a bug. Please double-check the documentation available at
http://www.php.net/manual/ and the instructions on how to
report
a bug at http://bugs.php.net/how-to-report.php
defaultly, php gc will run when the buffer root reach 10000, but you can force the
collection of cycles by calling gc_collect_cycles() function.
see: http://www.php.net/manual/en/features.gc.collecting-cycles.php
------------------------------------------------------------------------
[2012-01-31 12:55:44] npm at nuestrared dot com
Description:
------------
Hi, this is a recurring problem in PHP when unserializing large nested objects.
When unserializing inside a loop the same serialized object, the total memory
consumption increases every couple of iterations. I am attaching the code to
replicate it. Have tested it in the latest 5.4 (snap), it also occurs in 5.3.
Let me know if you need any more details,
Tested on Debian Linux 64 wheezy/sid, however I believe is platform independent.
Couldn't find a bug category for serialize/mem leak related issues.
Test script:
---------------
<?php
$str =
base64_decode('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');
for ($i=0; $i<1000; $i++) {
echo "Iteration $i\t Mem ".memory_get_usage(true)."\n";
unserialize($str);
}
Expected result:
----------------
The memory consumption should be stable, it increases with iterations.
Actual result:
--------------
Result from script:
Iteration 0 Mem 262144
Iteration 1 Mem 524288
Iteration 2 Mem 524288
Iteration 3 Mem 524288
Iteration 4 Mem 524288
Iteration 5 Mem 524288
Iteration 6 Mem 524288
Iteration 7 Mem 786432
Iteration 8 Mem 786432
Iteration 9 Mem 786432
Iteration 10 Mem 786432
Iteration 11 Mem 786432
Iteration 12 Mem 786432
Iteration 13 Mem 786432
Iteration 14 Mem 1048576
Iteration 15 Mem 1048576
------------------------------------------------------------------------
--
Edit this bug report at https://bugs.php.net/bug.php?id=60937&edit=1