Jede php-Variable existiert in einem zval-Variablencontainer. Zusätzlich zum Typ und Wert der Variablen enthält der Container auch, ob is_ref zur -Referenz
Außerdem gibt es einen Refcount-Referenzzähler. Wenn eine Variable einer anderen Variable zugewiesen wird, wird die Anzahl der Referenzen erhöht. Wenn die Variable nicht gesetzt ist oder ihren Gültigkeitsbereich verlässt, wird der Referenzzähler um 1 verringert. Wenn der Referenzzähler auf 0 reduziert wird, wird der Speicher recycelt. Ein solcher Mechanismus kann jedoch dazu führen, dass Speicher verloren geht, wennReferenzen in einer Schleife ausgeführt werden.
Beispiel: Wenn einArray
selbst als Array-Element betrachtet wird, erscheint Folgendes:Wenn Array a nicht gesetzt ist Danach erscheint das Problem:
Der Speicher kann nicht recycelt werden.
Um dieses Problem zu lösen, wurde nach PHP5.3 der GC-Mechanismus eingeführt. Er richtet insbesondere einen Root-Puffer ein und fügt verdächtige Zval-Variablencontainer zu hinzu 1000. Sie können festlegen, dass es gemäß dem Recycling-Algorithmus-Mechanismus gelöscht wird, wenn es voll ist.Das obige ist der detaillierte Inhalt vonDetaillierte Erläuterung des Garbage-Collection-Mechanismus der PHP-Speicherverwaltung (Bild). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!