Beispieleinführung für den PHP-Garbage-Collection-Mechanismus

Freigeben: 2023-04-08 13:32:01
nach vorne
3346 Leute haben es durchsucht

Beispieleinführung für den PHP-Garbage-Collection-Mechanismus

<?php
$a = "new string";
?>
Nach dem Login kopieren

Im obigen Beispiel wird die neue Variable a im aktuellen Bereich generiert. Und es wird ein Variablencontainer vom Typ string und dem Wert new string generiert. In den zusätzlichen zwei Informationsbytes ist „is_ref“ standardmäßig auf FALSE gesetzt, da keine benutzerdefinierte Referenz generiert wird.

„refcount“ ist auf 1 gesetzt, da es nur eine Variable gibt, die diesen Variablencontainer verwendet. Beachten Sie, dass der Wert von „is_ref“ immer FALSE ist, wenn Sie ihn installiert haben Mit » Xdebug können Sie die Werte von „refcount“ und „is_ref“ anzeigen, indem Sie die Funktion xdebug_debug_zval() aufrufen.

Beispiel #2 Zval-Informationen anzeigen

<?php
xdebug_debug_zval(&#39;a&#39;);
?>
Nach dem Login kopieren

Die obige Routine gibt Folgendes aus:

a: (refcount=1, is_ref=0)=&#39;new string&#39;
Nach dem Login kopieren

Das Zuweisen einer Variablen zu einer anderen Variable erhöht die Anzahl der Referenzen (Refcount).

Beispiel Nr. 3 Erhöhen Sie die Referenzanzahl eines zval

<?php
$a = "new string";
$b = $a;
xdebug_debug_zval( &#39;a&#39; );
?>
Nach dem Login kopieren

Die obige Routine gibt Folgendes aus:

a: (refcount=2, is_ref=0)=&#39;new string&#39;
Nach dem Login kopieren

Zu diesem Zeitpunkt beträgt die Anzahl der Referenzen 2, da derselbe Variablencontainer verwendet wird wird von der Variablen a und der Variable b verwendet. PHP kopiert den generierten Variablencontainer nicht, wenn dies nicht erforderlich ist.

Der Variablencontainer wird zerstört, wenn „refcount“ 0 wird. Wenn eine mit einem Variablencontainer verknüpfte Variable ihren Gültigkeitsbereich verlässt (zum Beispiel: Die Funktionsausführung endet) oder die Funktion unset für die Variable aufgerufen wird () , „refcount“ wird um 1 reduziert, wie im folgenden Beispiel gezeigt:

Beispiel #4 Referenzanzahl verringern

<?php
$a = "new string";
$c = $b = $a;
xdebug_debug_zval( &#39;a&#39; );
unset( $b, $c );
xdebug_debug_zval( &#39;a&#39; );
?>
Nach dem Login kopieren

Die obige Routine gibt Folgendes aus:

a: (refcount=3, is_ref=0)='new string'
a: (refcount=1, is_ref=0)=&#39;new string&#39;
Nach dem Login kopieren

If führen wir nun unset($a); aus, wird dieser Variablencontainer mit Typ und Wert aus dem Speicher gelöscht.

Verwandte Empfehlungen:

PHP-Video-Tutorial: //m.sbmmt.com/course/list/29/type/2.html

Das obige ist der detaillierte Inhalt vonBeispieleinführung für den PHP-Garbage-Collection-Mechanismus. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
php
Quelle:oschina.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!