Wenn ich array_map()
Funktion testen. Es gibt ein sehr merkwürdiges Phänomen.Warum überläuft der Speicher bei der Verwendung von array_map für große Arrays?
Normale Größe Array
$array = range(1, 100000);
echo memory_get_usage();
array_map(function($value) {}, $array);
echo memory_get_usage();
Ergebnis
8649024
8649024
Es ist offensichtlich, dass die Speichergröße gleich ist.
Aber für großen Array
$array = range(1, 10000000);
echo memory_get_usage();
array_map(function($value) {}, $array);
echo memory_get_usage();
Ergebnis
84319040
Fatal error: Allowed memory size of 134217728 bytes exhausted (tried to allocate 36 bytes) in G:\phpStudy\WWW\testSpeed.php on line 6
Warum? Ich habe überall eine Suchantwort. Aber es scheint, dass nur wenige Leute dieses Problem haben. Wenn mir jemand helfen kann? Vielen Dank!
zu erstellen, Speicher zuzuweisen, setzen Sie Ihr Speicherlimit in php.ini auf -1. obwohl es kein guter Ansatz ist, aber das wird funktionieren – baig772
Iy ist besser zu diivide in mehreren Arrays. Dieser ist viel zu groß. – halojoy
Danke für Ihre Antwort. Der Punkt, ich bin neugierig, dass, wenn große Array verwenden würde der Speicher doule, aber nicht in kleinen Array. –