Cela ne fonctionne pas avec gc_collect_cycles()
Merci pour ton aide mais cela ne semble pas fonctionner.
Le simple unset ne rend pas l'espace alloué par la création d'un objet PHP.
Ai-je placé gc_collect_cycles() au bon endroit ?:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
| <?php
class Objet {
public $champs;
public function __construct($init) {
$champs = $init;
}
}
echo 'memoire initiale->' . memory_get_usage(true) . '<br/>';
gc_enable(); // GC_ ENABLE()
$tablo = array();
for ($x = 0; $x < 1000; $x++) {
$tablo[$x] = new Objet(str_repeat("Hello", 10000));
}
echo 'memoire après création tableau->' . memory_get_usage(true) . '<br/>';
for ($x = 0; $x < 1000; $x++) {
$mavar = $tablo[$x];
$mavar = null;
unset ($mavar);
$tablo[$x] = null;
unset($tablo[$x]);
}
$tablo = array();
echo gc_collect_cycles(). '<br/>'; // GC_COLLECT_CYCLES()
echo 'memoire après libération->' . memory_get_usage(true) . '<br/>';
?> |
Pour mémoire affichage du programme :
memoire initiale->524288
memoire après création tableau->786432
0
memoire après libération->786432