Entsprechend meiner Ausgabe von xdebug gibt is_array() die Menge an Speicher frei, die als Argument an sie übergeben wird. Wenn ich ein großes Array übergebe, leckt es eine Menge Speicher, nur um zu überprüfen, ob es ein Array ist.Warum verliert is_array() Speicher in PHP?
Gibt es einen Workaround dafür?
17.4313 21858520 +70004 -> is_array() [...]/app/app_model.php:526
Hier ist der Code-Schnipsel, die das Leck verursacht:
$ret = $this->behaviors[$b[$i]]->afterFind($this, $results, true);
if (is_array($ret)) {
$results = $ret;
}
Ich laufe dies auf Linux (Ubuntu 9,04)
PHP: 5.3.2
xdebug: 2,0 .5
uname -a gibt mir das:
Linux linux8 2.6.28-19-server # 64-Ubuntu SMP Mi 18. August 21.57.33 UTC 2010 i686 GNU/Linux
Ich glaube, Sie haben vergessen, die PHP-Version und Ihren Code anzugeben, der für dieses Leck relevant sein sollte. 'insertPHPJoke()' –
Was meinst du mit "Leckspeicher"? Der Speicher wird nach dem Anruf nicht zurückgewonnen? – Artefacto
Kann ich es hier nicht reproduzieren: hast du 'xdebug.collect_params' aktiviert, und was passiert, wenn du es deaktivierst? – Wrikken