|
php.net | support | documentation | report a bug | advanced search | search howto | statistics | random bug | login |
PatchesPull RequestsHistoryAllCommentsChangesGit/SVN commits
[2021-08-16 10:21 UTC] nikic@php.net
-Status: Open
+Status: Duplicate
[2021-08-16 10:21 UTC] nikic@php.net
|
|||||||||||||||||||||||||||
Copyright © 2001-2025 The PHP GroupAll rights reserved. |
Last updated: Sat Nov 08 05:00:02 2025 UTC |
Description: ------------ eval('return function() {};') seems to create a memory leak. If I replace eval('return function() {};'); with function() {}; there's no memory leak but if I replace eval('return function() {};'); with $a = eval('return function() {};'); unset($a); there is still. So it's like the eval() is what's causing the issue. Per https://3v4l.org/3p4sl apparently this code didn't start leaking until PHP 7.4. Test script: --------------- <?php while (true) { eval('return function() {};'); gc_collect_cycles(); $new = memory_get_usage(); if (isset($old)) { echo ($new - $old) . "\n"; } $old = $new; } ?> Expected result: ---------------- I would expect this to output a bunch of 0's, one after the other. Actual result: -------------- 432 is output over and over and over again, indicating that each new pass is consuming an additional 432 bytes than the last one.