Heim Backend-Entwicklung PHP-Tutorial PHP unset zerstört Variablen und gibt Speicher frei

PHP unset zerstört Variablen und gibt Speicher frei

Aug 08, 2016 am 09:21 AM
echo get memory unset usage

Die unset()-Funktion von PHP wird zum Löschen und Zerstören von Variablen verwendet. Wir können unset() verwenden, um nicht verwendete Variablen zu zerstören. Aber manchmal kann die Verwendung von unset() den von der Variablen belegten Speicher nicht zerstören! Schauen wir uns zunächst ein Beispiel an:

  1. $s=str_repeat('1',255); //Erzeuge einen String bestehend aus 255 Einsen
  2. $m=memory_get_usage(); //Den aktuell belegten Speicher abrufen
  3. unset($s);
  4. $mm=memory_get_usage(); //unset() und dann den aktuell belegten Speicher prüfen
  5. Echo$m-$mm;
  6. ?>

Geben Sie schließlich den vor unset() belegten Speicher abzüglich des nach unset() belegten Speichers aus. Wenn es sich um eine positive Zahl handelt, bedeutet dies, dass unset($s) $s aus dem Speicher zerstört hat (oder mit anderen Worten, den belegten Speicher). nachdem unset() reduziert wurde), aber unter PHP5 und Windows-Plattformen ist das Ergebnis, das ich erhalten habe: -48. Bedeutet das, dass unset($s) den von der Variablen $s belegten Speicher nicht zerstört? Nehmen wir das folgende Beispiel:

  1. $s=str_repeat('1',256); //Erzeuge einen String bestehend aus 256 Einsen
  2. $m=memory_get_usage(); //Den aktuell belegten Speicher abrufen
  3. unset($s);
  4. $mm=memory_get_usage(); //unset() und dann den aktuell belegten Speicher prüfen
  5. Echo$m-$mm;
  6. ?>

Dieses Beispiel ist fast das gleiche wie das obige Beispiel. Der einzige Unterschied besteht darin, dass $s aus 256 Einsen besteht, was eine Eins mehr ist als das erste Beispiel. Bedeutet das, dass unset($s) den von $s belegten Speicher zerstört hat?

Anhand der beiden oben genannten Beispiele können wir die folgenden Schlussfolgerungen ziehen: Schlussfolgerung 1. Die Funktion unset() kann den Speicherplatz nur dann freigeben, wenn der Variablenwert mehr als 256 Byte Speicher belegt Raum. .

Kann die Verwendung von „Unset“ Speicherplatz freigeben, solange der Variablenwert 256 überschreitet? Testen wir es mit einem anderen Beispiel:

  1. $s=str_repeat('1 ',256); //Das ist genau das Gleiche wie im zweiten Beispiel
  2. $p=&$s;
  3. $m=memory_get_usage();
  4. unset($s); //Destroy $s
  5. $mm=memory_get_usage();
  6. echo$p.'< br />';
  7. echo$m-$mm;
  8. ?>

Aktualisieren Sie die Seite. Wir sehen, dass die erste Zeile 256 Einsen enthält und die zweite Zeile -48. Es liegt auf der Hand, dass wir $s zerstört haben und $p nur eine Variable ist, die referenziert $s, das sein sollte Es gibt keinen Inhalt. Außerdem ist die Speichernutzung nach unset($s) im Vergleich zu vor unset() gestiegen! Machen wir nun das folgende Beispiel:

  1. $s=str_repeat('1' ,256); //Das ist genau das Gleiche wie im zweiten Beispiel
  2. $p=&$s;
  3. $m=memory_get_usage();
  4. $s=null //Setze $s auf null
  5. $mm=memory_get_usage();
  6. echo$p.'< br />';
  7. echo$m-$mm;
  8. ?>

Aktualisieren Sie nun die Seite. Wir sehen, dass die Ausgabe $p keinen Inhalt hat. Der Unterschied in der Speichernutzung vor und nach unset() beträgt 224, d. h. der von der Variablen belegte Speicher wurde gelöscht . $s=null kann in diesem Beispiel auch durch unset() ersetzt werden, wie folgt:

  1. $s= str_repeat ('1',256); //Das ist genau das Gleiche wie im zweiten Beispiel
  2. $p=&$s;
  3. $m=memory_get_usage();
  4. unset($s); //Destroy $s
  5. unset($p);
  6. $mm=memory_get_usage();
  7. echo $p.'
    ';
  8. echo$m-$mm;
  9. ?>

Wir zerstören sowohl $s als auch $p mit unset() und schauen uns dann den Unterschied in der Speichernutzung an 224 , was darauf hinweist, dass dadurch auch Speicher freigegeben werden kann. Dann können wir eine weitere Schlussfolgerung ziehen: Schlussfolgerung 2. Der Speicher wird nur freigegeben, wenn alle Variablen (z. B. Referenzvariablen), die auf die Variable verweisen, zerstört sind.

Ich glaube, dass nach den Beispielen in diesem Artikel jeder ein Verständnis von unset() haben sollte. Zumindest verwende ich unset(), um Speicher freizugeben, wenn die Variable dies nicht tut arbeiten.

Das Obige stellt PHP vor, das nicht zum Zerstören von Variablen und zum Freigeben von Speicher bestimmt ist, einschließlich des Inhalts. Ich hoffe, es wird für Freunde hilfreich sein, die sich für PHP-Tutorials interessieren.

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)

CAMM2 für Desktop-PCs: MSI erklärt die Vorteile des neuen RAM-Standards für Gaming-Towers CAMM2 für Desktop-PCs: MSI erklärt die Vorteile des neuen RAM-Standards für Gaming-Towers Aug 17, 2024 pm 06:47 PM

Die ersten LPCAMM2-Module für Laptops werden bereits ausgeliefert, künftig sollen auch Desktop-Mainboards mit CAMM2 ausgestattet werden. CAMM2 und LPCAMM2 sind nicht miteinander kompatibel und selbst auf Desktop-PCs müssen Kunden vorsichtig sein

So automatisieren Sie Aufgaben mit PowerShell So automatisieren Sie Aufgaben mit PowerShell Feb 20, 2024 pm 01:51 PM

Wenn Sie ein IT-Administrator oder Technologieexperte sind, müssen Sie sich der Bedeutung der Automatisierung bewusst sein. Insbesondere für Windows-Benutzer ist Microsoft PowerShell eines der besten Automatisierungstools. Microsoft bietet eine Vielzahl von Tools für Ihre Automatisierungsanforderungen, ohne dass Sie Anwendungen von Drittanbietern installieren müssen. In diesem Leitfaden erfahren Sie, wie Sie PowerShell zur Automatisierung von Aufgaben nutzen können. Was ist ein PowerShell-Skript? Wenn Sie Erfahrung mit PowerShell haben, haben Sie möglicherweise Befehle zum Konfigurieren Ihres Betriebssystems verwendet. Ein Skript ist eine Sammlung dieser Befehle in einer .ps1-Datei. .ps1-Dateien enthalten von PowerShell ausgeführte Skripte, z. B. grundlegende Get-Help

Fünf ausgewählte Open-Source-Projekte in der Go-Sprache, mit denen Sie die Welt der Technologie erkunden können Fünf ausgewählte Open-Source-Projekte in der Go-Sprache, mit denen Sie die Welt der Technologie erkunden können Jan 30, 2024 am 09:08 AM

Im heutigen Zeitalter der rasanten technologischen Entwicklung schießen Programmiersprachen wie Pilze nach einem Regenschauer aus dem Boden. Eine der Sprachen, die viel Aufmerksamkeit erregt hat, ist die Go-Sprache, die von vielen Entwicklern wegen ihrer Einfachheit, Effizienz, Parallelitätssicherheit und anderen Funktionen geliebt wird. Die Go-Sprache ist für ihr starkes Ökosystem mit vielen hervorragenden Open-Source-Projekten bekannt. In diesem Artikel werden fünf ausgewählte Open-Source-Projekte für die Go-Sprache vorgestellt und der Leser soll die Welt der Open-Source-Projekte für die Go-Sprache erkunden. KubernetesKubernetes ist eine Open-Source-Container-Orchestrierungs-Engine für die Automatisierung

Go-Grundlagen zur Sprachentwicklung: 5 beliebte Framework-Empfehlungen Go-Grundlagen zur Sprachentwicklung: 5 beliebte Framework-Empfehlungen Mar 24, 2024 pm 01:15 PM

„Grundlagen der Go-Sprachentwicklung: 5 beliebte Framework-Empfehlungen“ Als schnelle und effiziente Programmiersprache wird die Go-Sprache von immer mehr Entwicklern bevorzugt. Um die Entwicklungseffizienz zu verbessern und die Codestruktur zu optimieren, entscheiden sich viele Entwickler für die Verwendung von Frameworks, um Anwendungen schnell zu erstellen. In der Welt der Go-Sprache stehen viele hervorragende Frameworks zur Auswahl. In diesem Artikel werden fünf beliebte Go-Sprach-Frameworks vorgestellt und spezifische Codebeispiele bereitgestellt, um den Lesern zu helfen, diese Frameworks besser zu verstehen und zu verwenden. 1.GinGin ist ein leichtes Web-Framework mit hoher Geschwindigkeit

Wie initiiert Java eine http-Anfrage, ruft den Beitrag auf und erhält Schnittstellen? Wie initiiert Java eine http-Anfrage, ruft den Beitrag auf und erhält Schnittstellen? May 16, 2023 pm 07:53 PM

1. Java ruft die Post-Schnittstelle auf. 1. Verwenden Sie URLConnection oder HttpURLConnection. Es ist nicht erforderlich, andere JAR-Pakete herunterzuladen. Rufen Sie URLConnection auf kann nur empfangen werden, wenn der Antwortcode korrekt ist, um publicstaticStringsendPost(Stringurl,Stringparam){OutputStreamWriterout=null;BufferedReaderin=null;StringBuilderresult=newSt zurückzugeben

Bluescreen-Problem verursacht durch Win10-Speicherverwaltung Bluescreen-Problem verursacht durch Win10-Speicherverwaltung Dec 30, 2023 pm 07:11 PM

Das Win10-System ist ein ausgezeichnetes System, dessen Verwendung sich lohnt. Seine starke Kompatibilität und hohe Intelligenz können dafür sorgen, dass es bei der Verwendung des Win10-Systems grundsätzlich keine Probleme gibt. In letzter Zeit haben jedoch viele Freunde berichtet, dass ihre Computer häufig blaue Festplatten haben . Und es wird immer der Fehlercode angezeigt. Speicherverwaltung Was ist los? Heute bringt Ihnen der Editor die Lösung für den häufigen Bluescreen von Win10 und den Speicherverwaltungs-Beendigungscode. Wenn Sie ein Spiel benötigen, schauen Sie vorbei. Lösung für den blauen Bildschirm von win10memorymanagement: Lösung 1: 1. Verwenden Sie „Win-Taste + R“ + Eingabetaste „Strg + Eingabetaste“, um die Bedienoberfläche aufzurufen

Beispiel für den Curl Get-Befehl Beispiel für den Curl Get-Befehl Mar 20, 2024 pm 06:56 PM

Unter Linux ist der URL- oder Curl-Client ein beliebtes Befehlszeilenprogramm, mit dem Sie Daten über das Netzwerk mithilfe verschiedener Protokolle wie HTTPS, HTTP, FTP usw. übertragen können. Es ermöglicht Ihnen das Senden und Empfangen von Daten mithilfe der Get-, Post- und Request-Methoden. Unter anderem müssen Sie die Methode „get“ häufig verwenden. Daher ist es wichtig, verschiedene Methoden und Optionen zu erlernen, mit denen Sie Ihre Produktivität steigern können. „Das Ausführen einer Curl-Operation ist so einfach wie die Eingabe einiger einfacher Befehle. Obwohl es einfach erscheint, erkennen viele Benutzer sein Potenzial nicht vollständig. Daher bietet diese kurze Anleitung einige Informationen zum Ausführen von Curl-Operationen auf Linux-Systemen. Beispiel mit „ Curlget“-Befehl „Curl.

Implementierung der verteilten Aufgabenplanung mit Golangs Web-Framework Echo-Framework Implementierung der verteilten Aufgabenplanung mit Golangs Web-Framework Echo-Framework Jun 24, 2023 am 11:49 AM

Mit der Entwicklung des Internets und der Weiterentwicklung der Informationstechnologie ist das Zeitalter von Big Data angebrochen, und auch Bereiche wie Datenanalyse und maschinelles Lernen sind weit verbreitet. In diesen Bereichen ist die Aufgabenplanung ein unvermeidliches Problem. Für die Verbesserung der Effizienz ist es von entscheidender Bedeutung, eine effiziente Aufgabenplanung zu erreichen. In diesem Artikel stellen wir vor, wie Sie das Web-Framework Echo-Framework von Golang verwenden, um eine verteilte Aufgabenplanung zu implementieren. 1. Einführung in das Echo-Framework Echo ist ein leistungsstarkes, skalierbares und leichtes GoWeb-Framework. Es basiert auf HTTP

See all articles