Comment libérer de la mémoire en PHP?
public function foo($file1, $file2){
$obj = new Obj();
$data = array();
$data[] = $obj->importAFile($file1);
$data[] = $obj->importAFile($file2);
return $data;
}
La mémoire allouée pour $obj être libéré après le retour?
Si non, comment puis-je libre?
En PHP il y a garbage collector stackoverflow.com/questions/1735492/...
OriginalL'auteur Jane | 2011-08-25
Vous devez vous connecter pour publier un commentaire.
PHP utilise garbace collector. Il libère toutes les variables pour lesquelles il n'existe pas de références à gauche. En supposant que $obj->importAFile() ne retourne pas de référence à $obj, la mémoire sera libérée. Cependant, il n'est pas garanti lorsque la mémoire sera libérée. Si $obj contient référence à lui-même, dans les anciennes versions de PHP, la mémoire n'est pas libérée. Vous pouvez en lire plus dans La documentation PHP
OriginalL'auteur Maxim Krizhanovsky
Par l'aide de la fonction unset() sur une variable, vous avez marqué pour "garbage collection" littéralement, que le PHP n'est pas vraiment un, de sorte que la mémoire n'est pas immédiatement disponible. La variable n'abrite plus les données, mais la pile reste à la taille actuelle, même après l'appel de la fonction unset(). Définition de la variable à NULL supprime les données et réduit la taille de la pile mémoire presque immédiatement.
Ce qui a fonctionné pour moi, à plusieurs reprises, où la mémoire épuisée avertissements ont été lancés avant le réglage, puis l'appel de la fonction unset() après l'annulation de la variable. L'appel de la fonction unset après de détruire peut-être pas nécessaire, mais je l'ai utilisé néanmoins après l'annulation.
gc_enable()
et puisgc_collect_cycles()
OriginalL'auteur Babatunde Adeyemi
Il gère la mémoire pour vous. Vous pourriez avoir un problème seulement quand il y a quelques références circulaires entre vos objets
OriginalL'auteur Jakub M.