Gestion memoire de php

Résolu
gr43 Messages postés 95 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 8 septembre 2010 - 13 juin 2008 à 19:03
gr43 Messages postés 95 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 8 septembre 2010 - 13 juin 2008 à 21:30
Salut, j'aimerai savoir comment php alloue la mémoire? allocation statique, dynamique?
Sur php.net, les références ne sont pas des pointeurs, n'y aurait  t-il donc pas  de pointeur en php et d'allocation dynamique.  Pourquoi n'est-il pas possible de libérer la mémoire d'un objet même en PHP5? Je sais cela fait bcp de question donc si quelqu'un à des bonnes adresses pour les longues soirées d'hiver, je suis preneur.

4 réponses

coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
13 juin 2008 à 19:44
euh...

la memoire, c'est php qui la gere, pas le programmeur... c'est un langage intereprete pas compile (enfin compile en bytecode puis interprete par une VM, mais la VM est deja de haut niveau...)

t'as un garbage collector, et toutes les variables que tu declares sont alloues sur la heap (enfin j'imagine) puisque c'est un typage dynamique, et qu'il ne sait pas quelle sera la taille de la variable...

stack = statique
heap = dynamique

de plus, chaque variable prend beaucoup plus de place que son contenu reel (fait un tableau de 1024 * 1024 d'entiers, tu verras, t'as pas seulement 4 mo de pris)

Bref...

sinon, t'as unset et __detruct pour liberer la memoire...
et pour les ressources :
image_destroy
mysql_free_result
mysql_close
fclose
closedir
etc...

tout ca ca libere de la memoire

mais sinon, la philosophie en php, c'est justement que tu ne DOIS PAS gerer la memoire toi meme !

sinon, on devrait declarer les variables...

a mon avis, pour en apprendre sur ce sujet, tu devrais lire le code de php.
3
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
13 juin 2008 à 20:30
nan mais c'est passe par reference, mais t'as un garbage collector quand meme... t'es pas en C la, t'es en php... dans un langage dynamique...
3
gr43 Messages postés 95 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 8 septembre 2010
13 juin 2008 à 19:56
Merci de t'as réponse, elle commence à m'éclairer. Bon lire le code php, ce sera pt-être un peu chaud. Dans certains forums, il dise que même en utlisant unset..., _destruct la mémoire est libéré en fin de script. Or d'après, http://fr.php.net/manual/fr/language.references.unset.php et le post de NOSPAM et que les objets sont passés par référence automatiquement en php5, ça à l'aire d'être possible.
0
gr43 Messages postés 95 Date d'inscription mardi 20 mai 2008 Statut Membre Dernière intervention 8 septembre 2010
13 juin 2008 à 21:30
Merci je vai continuer mes recherches sur les "ramasses miettes".
A plus
0
Rejoignez-nous