|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||
|
Membre régulier
![]() Inscription : mai 2004 Messages : 121 ![]() |
Bonjour,
Le code ci dessous(que vous pouvez tester chez vous) remplit un tableau localement dans une fonction. A la sortie de la fonction, la mémoire occupée par le tableau n'est pas libérée. Quelqu'un aurait-il une explication ? Code :
Je précise que j'utilise PHP 5.3.5. |
||
|
|
00
|
|
|
#2 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Ton tableau fait 15Mo, il est donc bien liberé.
Tu as par contre 1,75Mo en plus pour la déclaration de tes deux fonctions. |
|
|
00
|
|
|
#3 | ||||||||
|
Membre régulier
![]() Inscription : mai 2004 Messages : 121 ![]() |
Code :
La mémoire libérée dépend du nombre d'itérations et non de la déclaration des deux fonctions : Pour i = 1 Code :
Code :
Code :
|
||||||||
|
|
00
|
|
|
#4 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Avec PHP5.3 j'obtiens les mêmes résultats que toi.
Cependant, quelque soit le nombre d’itérations on ne dépasse pas 3Mo. Je pense que l'explication touche à ce qui est décrit ici : http://bugs.php.net/bug.php?id=33487 |
|
|
00
|
|
|
#5 | ||||
|
Membre régulier
![]() Inscription : mai 2004 Messages : 121 ![]() |
Effectivement cela se stabilise vers 3Mo à partir d'un certain seuil. Certainement grâce au garbage collector de php 5.3.
Cependant, mon cas va plus loin. Mon tableau devient une liste d'objet. Avec le code ci dessous, la mémoire ne redescend plus. Code :
Code :
|
||||
|
|
00
|
|
|
#6 |
![]() ![]() Vincent Inscription : juillet 2005 Messages : 14 929 ![]() |
Pour moi c'est la même chose et cela correspond toujours à ce que est décrit dans l'article.
|
|
|
00
|
|
|
#7 |
|
Membre régulier
![]() Inscription : mai 2004 Messages : 121 ![]() |
Oui c'est vrai. Je trouve curieux que ce "bug" soit toujours présent depuis 2005.
Merci pour ton aide. Sur ce, je vais clore le sujet. A bientôt. |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com