<?php
// setting either of these to false will prevent memory leak
$assoc = true;
$unserialize = true;
function formatBytes($size, $precision = 2) {
$base = log($size, 1024);
$suffixes = [ '', 'K', 'M', 'G', 'T' ];
return round(pow(1024, $base - floor($base)), $precision) .' '. $suffixes[floor($base)];
}
function load($str) {
global $assoc, $unserialize;
$php = serialize($assoc ? [ $str => 1 ] : [ $str ]);
if ($unserialize)
unserialize($php);
}
for ($ctr = 0; $ctr < 50000; $ctr++)
load("foo_$ctr");
echo 'Usage: ', formatBytes(memory_get_usage()) , "\n";
echo 'Peak: ', formatBytes(memory_get_peak_usage()) , "\n";
- Output for 8.2.7
- Usage: 382.1 K
Peak: 418.44 K
- Output for 8.1.0 - 8.1.9
- Usage: 382.56 K
Peak: 418.89 K
- Output for 7.4.0 - 7.4.33, 8.0.0 - 8.0.22
- Usage: 4.73 M
Peak: 5.34 M
- Output for 7.3.0 - 7.3.33
- Usage: 4.73 M
Peak: 5.36 M
preferences:
112.53 ms | 401 KiB | 103 Q