Inhaltsverzeichnis
Was ist Müllabfuhr?
Der Garbage-Collection-Algorithmus von PHP
Zusammenfassung
Empfohlenes Lernen: „PHP-Video-Tutorial
Heim Backend-Entwicklung PHP-Tutorial Was ist Garbage Collection in PHP? Welchen Einfluss hat es auf die Leistung?

Was ist Garbage Collection in PHP? Welchen Einfluss hat es auf die Leistung?

Jul 29, 2021 pm 06:28 PM
php 垃圾回收机制

Dieser Artikel führt Sie in die Garbage Collection ein, analysiert kurz den Garbage Collection-Mechanismus in PHP und spricht schließlich über die Auswirkungen der Garbage Collection auf die Leistung.

Was ist Garbage Collection in PHP? Welchen Einfluss hat es auf die Leistung?

Ich glaube, dass Schüler, die ein wenig über Entwicklung gelernt haben, wissen, dass eine Variable unabhängig von der Programmiersprache im Speicher gespeichert wird. Tatsächlich manipulieren wir Entwickler ständig den Speicher. Wenn wir weiterhin neue Variablen hinzufügen, wird der Speicher unbegrenzt vergrößert und schließlich voll. Dies führt zu einem Speicherverlust. In der täglichen Entwicklung treten jedoch fast nie Speicherüberlauffehler auf, es sei denn, es wird jeweils eine große Datei geladen. Dies ist die Rolle des Garbage-Collection-Mechanismus.

Was ist Müllabfuhr?

Bei der Verwendung der C-Sprache müssen wir manuell freien Speicher freigeben. Die meisten Programmiersprachen nach C verfügen über eine Verarbeitungsfunktion wie Garbage Collection, den Garbage Collection-Mechanismus, über den wir sprechen werden heute, auch bekannt als GC. In Entwicklungssprachen mit GC-Funktionen müssen wir uns nicht darum kümmern, wann Speicher freigegeben wird, und wir müssen den Inhalt dieses Teils überhaupt nicht verstehen, da diese Sprachen dies bereits gehandhabt haben Problem der Speicherfreigabe für uns auf der untersten Ebene.

Der bekannteste Inhalt in diesem Bereich ist natürlich der Garbage-Collection-Mechanismus in Java. Natürlich sind viele PHPer diesem Aspekt möglicherweise noch nie ausgesetzt .

Der Garbage-Collection-Algorithmus von PHP

Im vorherigen Artikel haben wir das Konzept der Referenzzählung vorgestellt. Vor PHP5.3 war der Garbage-Collection-Mechanismus von PHP sehr einfach. Er bestand darin, alle Elemente mit einem Refcount von 0 zu bereinigen und zu recyceln, was auf der untersten Ebene kostenlos war. Diese Methode führt jedoch zu einem Problem, nämlich dem Zirkelverweis, den wir im Artikel über die Referenzzählung erwähnt haben. Diese Art von Referenzproblem kann nicht durch die normale Beurteilung der Refcount recycelt werden. Vor PHP5.3 führten Zirkelverweise also zu Speicherlecks.

Der Grund, warum ich die Version hervorhebe, ist, dass PHP nach 5.3 den Garbage-Collection-Algorithmus verbessert und diesen Zirkelverweis gelöst hat. (Natürlich versuchen wir, diese Art von Zirkelverweisproblemen in der täglichen Entwicklung zu vermeiden.) Für den spezifischen Algorithmus zitieren wir das offizielle Bild:

Was ist Garbage Collection in PHP? Welchen Einfluss hat es auf die Leistung?

Das offizielle Dokument enthält eine detaillierte Erklärung, die Sie jedoch immer noch verwirrt. Benutzen wir einfache Sprache (menschliche Sprache), um diesen Prozess zu beschreiben.

Zuallererst haben wir das Konzept des Root-Puffers, der im Bild die Wurzel darstellt. Auf der untersten Ebene können wir durch eine Reihe unverständlicher Algorithmen eine mögliche Wurzel jeder Variablen finden. PHP legt die möglichen Wurzeln der Variablen im Root-Puffer ab.

Wenn der Root-Puffer voll ist, beträgt der Standardwert im Allgemeinen 10000. Sie müssen den Quellcode ändern und neu kompilieren, um diesen Wert zu ändern. PHP startet den Garbage-Collection-Mechanismus, folgt dem Tiefendurchlaufalgorithmus vom Root-Puffer, um alle Variablen zu finden, die sich auf diesen möglichen Root beziehen, reduziert den Refcount der von einem bestimmten möglichen Root gefundenen Variablen um 1 und erstellt eine Markierung zum Markieren die aktuelle.

Dann die Tiefe erneut durchqueren. Wenn refcount nicht 0 ist, addiere 1. Wenn es 0 ist, behalte es unverändert.

Dann löschen Sie alle möglichen Roots im Root-Puffer, löschen statt löschen. Bereinigen Sie dann alle Variableninhalte und geben Sie sie mit einem Refcount von 0 frei.

Bist du schon verwirrt? Tatsächlich bin ich auch sehr verwirrt, ich weiß nicht, wie ich diesen Absatz schreiben soll ...

Merken Sie einfach ein paar wichtige Punkte und Sie können das Interview bewältigen und die meisten Menschen im Handumdrehen töten.

  • Nach PHP5.3 prüfen wir nicht direkt, ob der Refcount jeder Variablen 0 ist. Der verwendete Algorithmus ist ein Root-Puffer und wird entsprechend bereinigt C und Algorithmen. Studieren Sie es sorgfältig, wenn Sie den Quellcode lernen
  • Die Garbage Collection wirkt sich auf die Leistung aus. Die Auswirkung von
  • Wie bereits erwähnt, wird die Garbage Collection sofort ausgeführt, nachdem der Root-Puffer voll ist. Außerdem wird es zwei Tiefendurchläufe geben, was zwangsläufig zu einem Leistungsverbrauch führt. Schließlich braucht die Ausführung von Algorithmen Zeit. Im Vergleich zu verheerenden Fehlern wie einem Speicherüberlauf ist der durch die Garbage Collection verursachte Leistungsverlust jedoch grundsätzlich vernachlässigbar.

Zusammenfassung

Tatsächlich müssen wir uns nur an einige wichtige Punkte zur Speicherbereinigung erinnern. Der spezifische Kernalgorithmus und der Inhalt können natürlich erst nach einer eingehenderen Untersuchung des Quellcodes verstanden werden ist auch das, was wir lernen. Das Ziel des Lernens ist, dass wir in Zukunft definitiv den zugrunde liegenden Inhalt des Quellcodes abdecken, also lasst uns abwarten und sehen!

Empfohlenes Lernen: „PHP-Video-Tutorial

Das obige ist der detaillierte Inhalt vonWas ist Garbage Collection in PHP? Welchen Einfluss hat es auf die Leistung?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. So reparieren Sie Audio, wenn Sie niemanden hören können
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Wie man alles in Myrise freischaltet
3 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

CakePHP arbeitet mit Datenbank CakePHP arbeitet mit Datenbank Sep 10, 2024 pm 05:25 PM

Das Arbeiten mit der Datenbank in CakePHP ist sehr einfach. In diesem Kapitel werden wir die CRUD-Operationen (Erstellen, Lesen, Aktualisieren, Löschen) verstehen.

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

CakePHP erstellt Validatoren CakePHP erstellt Validatoren Sep 10, 2024 pm 05:26 PM

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.

CakePHP-Protokollierung CakePHP-Protokollierung Sep 10, 2024 pm 05:26 PM

Die Anmeldung bei CakePHP ist eine sehr einfache Aufgabe. Sie müssen nur eine Funktion verwenden. Sie können Fehler, Ausnahmen, Benutzeraktivitäten und von Benutzern durchgeführte Aktionen für jeden Hintergrundprozess wie Cronjob protokollieren. Das Protokollieren von Daten in CakePHP ist einfach. Die Funktion log() wird bereitgestellt

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

See all articles