php-meminfo
php-meminfo copied to clipboard
Wrong result with Fibers PHP 8.1
STR
- Run the script.
namespace AAA;
$mem = new \ArrayObject([1, 2, 3]);
$_SERVER = [];
unset($argc, $argv);
$fiber = new \Fiber(static function() use ($mem): void {
echo "Run from the Fiber...\n";
while (true) {
$i = 100;
while ($i--) {
$mem->offsetSet('a'.random_int(0, 2000000), 10);
}
echo "Count ". $mem->count() ."\n";
\Fiber::suspend();
}
});
$mem = null;
unset($mem);
gc_collect_cycles();
$fiber->start();
$fiber->resume();
\meminfo_dump(\fopen('/tmp/mem_dump.json', 'w'));
$fiber->resume();
Actual result: ArrayObject is missing in the memory dump. Expected result: ArrayObject must be persist in the memory dump
mem_dump.json
{
"header" : {
"memory_usage" : 397944,
"memory_usage_real" : 2097152,
"peak_memory_usage" : 431256,
"peak_memory_usage_real" : 2097152
},
"items": {
"0x7f5691e58200" : {
"type" : "array",
"size" : "72",
"symbol_name" : "_GET",
"is_root" : true,
"frame" : "<GLOBAL>"
,
"children" : {
}
},
"0x7f5691e58220" : {
"type" : "array",
"size" : "72",
"symbol_name" : "_POST",
"is_root" : true,
"frame" : "<GLOBAL>"
,
"children" : {
}
},
"0x7f5691e58240" : {
"type" : "array",
"size" : "72",
"symbol_name" : "_COOKIE",
"is_root" : true,
"frame" : "<GLOBAL>"
,
"children" : {
}
},
"0x7f5691e58260" : {
"type" : "array",
"size" : "72",
"symbol_name" : "_FILES",
"is_root" : true,
"frame" : "<GLOBAL>"
,
"children" : {
}
},
"0x7f5691e14090" : {
"type" : "null",
"size" : "16",
"symbol_name" : "argv",
"is_root" : true,
"frame" : "<GLOBAL>"
},
"0x7f5691e14080" : {
"type" : "null",
"size" : "16",
"symbol_name" : "argc",
"is_root" : true,
"frame" : "<GLOBAL>"
},
"0x7f5691e582c0" : {
"type" : "array",
"size" : "72",
"symbol_name" : "_SERVER",
"is_root" : true,
"frame" : "<GLOBAL>"
,
"children" : {
}
},
"0x7f5691e14070" : {
"type" : "null",
"size" : "16",
"symbol_name" : "mem",
"is_root" : true,
"frame" : "<GLOBAL>"
},
"0x7f5691e5d640" : {
"type" : "object",
"size" : "72",
"symbol_name" : "fiber",
"is_root" : true,
"frame" : "<GLOBAL>"
,
"class" : "Fiber",
"object_handle" : "2",
"children" : {
}
}
}
}