Heim  >  Artikel  >  Backend-Entwicklung  >  Beispieleinführung für den PHP-Garbage-Collection-Mechanismus

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

尚
nach vorne
2020-03-23 09:16:233361Durchsuche

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

<?php
$a = "new string";
?>

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;);
?>

Die obige Routine gibt Folgendes aus:

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

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; );
?>

Die obige Routine gibt Folgendes aus:

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

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; );
?>

Die obige Routine gibt Folgendes aus:

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

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: https://www.php.cn/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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:oschina.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen