Traditionell kann der in PHP verwendete Speichermechanismus zur Referenzzählung keine Speicherlecks mit zirkulären Referenzen verarbeiten. Allerdings verwendet PHP 5.3.0 den Synchronisationsalgorithmus im Artikel » Concurrent Cycle Collection in Reference Counted Systems, um dieses Speicherverlustproblem zu lösen.
Eine vollständige Erklärung des Algorithmus würde den Rahmen dieses Abschnitts etwas sprengen und es werden nur die Grundlagen vorgestellt. Zunächst müssen wir einige Grundregeln festlegen. Wenn die Referenzanzahl erhöht wird, wird sie weiterhin verwendet und landet natürlich nicht mehr im Müll. Wenn der Referenzzähler auf Null reduziert wird, wird der Variablencontainer gelöscht (frei). Das heißt, ein Müllzyklus findet nur dann statt, wenn der Referenzzähler auf einen Wert ungleich Null sinkt. Zweitens können Sie während eines Garbage-Zyklus herausfinden, welche Teile Garbage sind, indem Sie prüfen, ob die Referenzanzahl um 1 reduziert wird und welche Variablencontainer keine Referenzen haben.
Das Obige ist der Inhalt des Garbage Collection-Mechanismus 2 der PHP-Merkmale – der Recyclingzyklus. Weitere verwandte Inhalte finden Sie auf der chinesischen PHP-Website (www.php.org). php.cn)!