PHP unset销毁变量并释放内存
PHP的unset()函数用来清除、销毁变量,不用的变量,我们可以用unset()将它销毁。但是某些时候,用unset()却无法达到销毁变量占用的内存!我们先看一个例子:
- $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所占用内存的作用呢?我们再作下面的例子:
- $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就可以释放内存空间呢?我们再通过一个例子来测试一下:
- $s=str_repeat('1',256); //这和第二个例子完全相同
- $p=&$s;
- $m=memory_get_usage();
- unset($s); //销毁$s
- $mm=memory_get_usage();
-
echo$p.'
'; - echo$m-$mm;
- ?>
刷新页面,我们看到第一行有256个1,第二行是-48,按理说我们已经销毁了$s,而$p只是引用$s的变量,应该是没有内容了,另外,unset($s)后内存占用却比unset()前增加了!现在我们再做以下的例子:
- $s=str_repeat('1',256); //这和第二个例子完全相同
- $p=&$s;
- $m=memory_get_usage();
- $s=null; //设置$s为null
- $mm=memory_get_usage();
-
echo$p.'
'; - echo$m-$mm;
- ?>
现在刷新页面,我们看到,输出$p已经是没有内容了,unset()前后内存占用量之差是224,即已经清除了变量占用的内存。本例中的$s=null也可以换成unset(),如下:
- $s=str_repeat('1',256); //这和第二个例子完全相同
- $p=&$s;
- $m=memory_get_usage();
- unset($s); //销毁$s
- unset($p);
- $mm=memory_get_usage();
-
echo$p.'
'; - echo$m-$mm;
- ?>
我们将$s和$p都使用unset()销毁,这时再看内存占用量之差也是224,说明这样也可以释放内存。那么,我们可以得到另外一条结论:结论二、只有当指向该变量的所有变量(如引用变量)都被销毁后,才会释放内存。
相信经过本文的例子后,大家应该对unset()有所了解了,最起码,本人用unset()也是为了在变量不起作用时,释放内存。
以上就介绍了PHP unset销毁变量并释放内存,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Si vous êtes un administrateur informatique ou un expert en technologie, vous devez être conscient de l'importance de l'automatisation. Surtout pour les utilisateurs de Windows, Microsoft PowerShell est l'un des meilleurs outils d'automatisation. Microsoft propose une variété d'outils pour vos besoins d'automatisation, sans qu'il soit nécessaire d'installer des applications tierces. Ce guide détaillera comment exploiter PowerShell pour automatiser les tâches. Qu'est-ce qu'un script PowerShell ? Si vous avez de l'expérience avec PowerShell, vous avez peut-être utilisé des commandes pour configurer votre système d'exploitation. Un script est une collection de ces commandes dans un fichier .ps1. Les fichiers .ps1 contiennent des scripts exécutés par PowerShell, tels que Get-Help de base

Les premiers modules LPCAMM2 pour ordinateurs portables sont déjà livrés et les cartes mères de bureau devraient également être équipées de CAMM2 à l'avenir. CAMM2 et LPCAMM2 ne sont pas compatibles entre eux, et même sur les ordinateurs de bureau, les clients doivent être prudents.

À l'ère actuelle de développement technologique rapide, les langages de programmation poussent comme des champignons après la pluie. L'un des langages qui a beaucoup retenu l'attention est le langage Go, apprécié par de nombreux développeurs pour sa simplicité, son efficacité, sa sécurité de concurrence et d'autres fonctionnalités. Le langage Go est connu pour son écosystème solide avec de nombreux excellents projets open source. Cet article présentera cinq projets open source sélectionnés en langage Go et amènera les lecteurs à explorer le monde des projets open source en langage Go. KubernetesKubernetes est un moteur d'orchestration de conteneurs open source pour l'automatisation

"Go Language Development Essentials : 5 recommandations de framework populaires" En tant que langage de programmation rapide et efficace, le langage Go est favorisé par de plus en plus de développeurs. Afin d'améliorer l'efficacité du développement et d'optimiser la structure du code, de nombreux développeurs choisissent d'utiliser des frameworks pour créer rapidement des applications. Dans le monde du langage Go, il existe de nombreux excellents frameworks parmi lesquels choisir. Cet article présentera 5 frameworks de langage Go populaires et fournira des exemples de code spécifiques pour aider les lecteurs à mieux comprendre et utiliser ces frameworks. 1.GinGin est un framework Web léger avec une rapidité

1. Java appelle l'interface de publication 1. Utilisez URLConnection ou HttpURLConnection fourni avec Java. Il n'est pas nécessaire de télécharger d'autres packages jar. Si le code de réponse de l'interface est modifié par le serveur, le message de retour ne peut pas être reçu. ne peut être reçu que lorsque le code de réponse est correct pour renvoyer publicstaticStringsendPost(Stringurl,Stringparam){OutputStreamWriterout=null;BufferedReaderin=null;StringBuilderresult=newSt.

Avec le développement d'Internet et les progrès des technologies de l'information, l'ère du Big Data est arrivée, et des domaines tels que l'analyse des données et l'apprentissage automatique ont également été largement utilisés. Dans ces domaines, la planification des tâches est un problème inévitable. Comment parvenir à une planification efficace des tâches est crucial pour améliorer l’efficacité. Dans cet article, nous présenterons comment utiliser le framework Web Echo de Golang pour implémenter la planification distribuée des tâches. 1. Introduction au framework Echo Echo est un framework GoWeb hautes performances, évolutif et léger. Il est basé sur HTTP

Laravel est un framework PHP populaire, hautement évolutif et efficace. Il fournit de nombreux outils et bibliothèques puissants qui permettent aux développeurs de créer rapidement des applications Web de haute qualité. Parmi eux, LaravelEcho et Pusher sont deux outils très importants grâce auxquels la communication WebSockets peut être facilement implémentée. Cet article détaillera comment utiliser ces deux outils dans les applications Laravel. Que sont les WebSockets ? WebSockets

Sous Linux, le client URL ou Curl est un utilitaire de ligne de commande populaire qui vous permet de transférer des données sur le réseau à l'aide de divers protocoles tels que HTTPS, HTTP, FTP, etc. Il vous permet d'envoyer et de recevoir des données en utilisant ses méthodes get, post et request. Parmi eux, vous devez utiliser fréquemment la méthode « get ». Par conséquent, il devient crucial d’apprendre diverses méthodes et différentes options que vous pouvez utiliser pour augmenter votre productivité. "Effectuer une opération curl est aussi simple que de saisir quelques commandes simples. Bien que cela semble simple, de nombreux utilisateurs ne réalisent pas pleinement son potentiel. Par conséquent, ce petit guide fournit des informations sur la façon d'effectuer des opérations curl sur les systèmes Linux. Exemple utilisant " curlget" commande "Curl.
