Maison >développement back-end >Problème PHP >Quelle est la différence entre le garbage collection php5 et php7 ?

Quelle est la différence entre le garbage collection php5 et php7 ?

青灯夜游
青灯夜游original
2019-10-19 15:49:294052parcourir

Quelle est la différence entre le garbage collection php5 et php7 ?

La différence entre le garbage collection php5 et php7

Les mécanismes de garbage collection de PHP5 et PHP7 sont tous deux des comptages de références, mais dans des types de données complexes Traitement de l'algorithme : il existe une nouvelle implémentation de zval dans PHP7.

Le changement le plus fondamental est que la mémoire requise par *zval n'est plus allouée séparément du tas et que le décompte de références n'est plus stocké par lui-même. Le nombre de références des types de données complexes (tels que les chaînes, les tableaux et les objets) est stocké par lui-même.

Cette implémentation présente les avantages suivants :

1. Les types de données simples n'ont pas besoin d'allouer de la mémoire séparément et n'ont pas besoin d'être comptés ; ne comptez pas encore deux fois la situation. Dans un objet, seul le nombre stocké dans l'objet lui-même est valide ;

3 Puisque le nombre est désormais stocké par la valeur elle-même, il peut être partagé avec des données dans des structures non-zval, par exemple entre zval. et clé de table de hachage.

Qu'est-ce que le comptage de références ?

Puisque PHP est écrit en C, il existe ce qu'on appelle une structure en C. Nos variables PHP sont stockées de cette manière en C.

Chaque variable PHP existe dans un conteneur appelé zval. Un conteneur zval, en plus du nom et de la valeur de la variable, comprend également deux octets d'informations supplémentaires :

● 'is_ref' est un booléen. valeur utilisée pour indiquer si cette variable appartient à la collection de référence. Grâce à cet octet, on peut distinguer les variables ordinaires des variables de référence en PHP.

● Le deuxième octet supplémentaire est 'refcount', qui est utilisé pour indiquer le nombre de variables pointant vers ce conteneur.

Comparaison du comptage de références entre PHP5 et PHP7

php 5.* Le comptage de références pour les opérations telles que l'affectation de variables est comme indiqué dans la figure dans l'avant-dernière étape. , une boucle sera formée de référence, et après l'opération non définie, des déchets seront générés.

Quelle est la différence entre le garbage collection php5 et php7 ?Le nombre de PHP 7 est placé dans une valeur spécifique, et zval n'a pas de copie sur écriture (split-on-write).

Et PHP 7 a un zend_reference spécial utilisé pour représenter les références.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn