PHP unset销毁变量并释放内存有关问题
PHP unset销毁变量并释放内存问题
以下内容均引自http://leepiao.blog.163.com/blog/static/485031302010718105814266/,阿飘的博客
?
?
PHP的unset()函数用来清除、销毁变量,不用的变量,我们可以用unset()将它销毁。但是某些时候,用unset()却无法达到销毁变量占用的内存!我们先看一个例子:
<?php $s=str_repeat('1',255); //产生由255个1组成的字符串 $m=memory_get_usage(); //获取当前占用内存 unset($s); $mm=memory_get_usage(); //unset()后再查看当前占用内存 echo $m-$mm; ?>
最后输出unset()之前占用内存减去unset()之后占用内存,如果是正数,那么说明unset($s)已经将$s从内存中销毁(或者 说,unset()之后内存占用减少了),可是我在PHP5和windows平台下,得到的结果是:-48。这是否可以说明,unset($s)并没有起 到销毁变量$s所占用内存的作用呢?我们再作下面的例子:
<?php $s=str_repeat('1',256); //产生由256个1组成的字符串 $m=memory_get_usage(); //获取当前占用内存 unset($s); $mm=memory_get_usage(); //unset()后再查看当前占用内存 echo $m-$mm; ?>
?这个例子,和上面的例子几乎相同,唯一的不同是,$s由256个1组成,即比第一个例子多了一个1,得到结果是:224。这是否可以说明,unset($s)已经将$s所占用的内存销毁了?
通过上面两个例子,我们可以得出以下结论:
结论一、unset()函数只能在变量值占用内存空间超过256字节时才会释放内存空间。
那么是不是只要变量值超过256,使用unset就可以释放内存空间呢?我们再通过一个例子来测试一下:
<?php $s=str_repeat('1',256); //这和第二个例子完全相同 $p=&$s; $m=memory_get_usage(); unset($s); //销毁$s $mm=memory_get_usage(); echo $p.'<br />'; echo $m-$mm; ?>
刷新页面,我们看到第一行有256个1,第二行是-48,按理说我们已经销毁了$s,而$p只是引用$s的变量,应该是没有内容了,另外,unset($s)后内存占用却比unset()前增加了!现在我们再做以下的例子:
<?php $s=str_repeat('1',256); //这和第二个例子完全相同 $p=&$s; $m=memory_get_usage(); $s=null; //设置$s为null $mm=memory_get_usage(); echo $p.'<br />'; echo $m-$mm; ?>
现在刷新页面,我们看到,输出$p已经是没有内容了,unset()前后内存占用量之差是224,即已经清除了变量占用的内存。本例中的$s=null也可以换成unset(),如下:
<?php $s=str_repeat('1',256); //这和第二个例子完全相同 $p=&$s; $m=memory_get_usage(); unset($s); //销毁$s unset($p); $mm=memory_get_usage(); echo $p.'<br />'; echo $m-$mm; ?>
我们将$s和$p都使用unset()销毁,这时再看内存占用量之差也是224,说明这样也可以释放内存。那么,我们可以得到另外一条结论:
结论二、只有当指向该变量的所有变量(如引用变量)都被销毁后,才会释放内存。
相信经过本文的例子后,大家应该对unset()有所了解了,最起码,本人用unset()也是为了在变量不起作用时,释放内存。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



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

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

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

„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

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

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

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.

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
