Rumah pembangunan bahagian belakang tutorial php PHP unset销毁变量并释放内存

PHP unset销毁变量并释放内存

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

PHP的unset()函数用来清除、销毁变量,不用的变量,我们可以用unset()将它销毁。但是某些时候,用unset()却无法达到销毁变量占用的内存!我们先看一个例子:

  1. $s=str_repeat('1',255); //产生由255个1组成的字符串
  2. $m=memory_get_usage(); //获取当前占用内存
  3. unset($s);
  4. $mm=memory_get_usage(); //unset()后再查看当前占用内存
  5. echo$m-$mm;
  6. ?>

最后输出unset()之前占用内存减去unset()之后占用内存,如果是正数,那么说明unset($s)已经将$s从内存中销毁(或者说,unset()之后内存占用减少了),可是我在PHP5和windows平台下,得到的结果是:-48。这是否可以说明,unset($s)并没有起到销毁变量$s所占用内存的作用呢?我们再作下面的例子:

  1. $s=str_repeat('1',256); //产生由256个1组成的字符串
  2. $m=memory_get_usage(); //获取当前占用内存
  3. unset($s);
  4. $mm=memory_get_usage(); //unset()后再查看当前占用内存
  5. echo$m-$mm;
  6. ?>

这个例子,和上面的例子几乎相同,唯一的不同是,$s由256个1组成,即比第一个例子多了一个1,得到结果是:224。这是否可以说明,unset($s)已经将$s所占用的内存销毁了?

通过上面两个例子,我们可以得出以下结论:结论一、unset()函数只能在变量值占用内存空间超过256字节时才会释放内存空间。

那么是不是只要变量值超过256,使用unset就可以释放内存空间呢?我们再通过一个例子来测试一下:

  1. $s=str_repeat('1',256); //这和第二个例子完全相同
  2. $p=&$s;
  3. $m=memory_get_usage();
  4. unset($s); //销毁$s
  5. $mm=memory_get_usage();
  6. echo$p.'
    '
    ;
  7. echo$m-$mm;
  8. ?>

刷新页面,我们看到第一行有256个1,第二行是-48,按理说我们已经销毁了$s,而$p只是引用$s的变量,应该是没有内容了,另外,unset($s)后内存占用却比unset()前增加了!现在我们再做以下的例子:

  1. $s=str_repeat('1',256); //这和第二个例子完全相同
  2. $p=&$s;
  3. $m=memory_get_usage();
  4. $s=null; //设置$s为null
  5. $mm=memory_get_usage();
  6. echo$p.'
    '
    ;
  7. echo$m-$mm;
  8. ?>

现在刷新页面,我们看到,输出$p已经是没有内容了,unset()前后内存占用量之差是224,即已经清除了变量占用的内存。本例中的$s=null也可以换成unset(),如下:

  1. $s=str_repeat('1',256); //这和第二个例子完全相同
  2. $p=&$s;
  3. $m=memory_get_usage();
  4. unset($s); //销毁$s
  5. unset($p);
  6. $mm=memory_get_usage();
  7. echo$p.'
    '
    ;
  8. echo$m-$mm;
  9. ?>

我们将$s和$p都使用unset()销毁,这时再看内存占用量之差也是224,说明这样也可以释放内存。那么,我们可以得到另外一条结论:结论二、只有当指向该变量的所有变量(如引用变量)都被销毁后,才会释放内存。

相信经过本文的例子后,大家应该对unset()有所了解了,最起码,本人用unset()也是为了在变量不起作用时,释放内存。

以上就介绍了PHP unset销毁变量并释放内存,包括了方面的内容,希望对PHP教程有兴趣的朋友有所帮助。

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

CAMM2 untuk PC desktop: MSI menerangkan faedah standard RAM baharu untuk menara permainan CAMM2 untuk PC desktop: MSI menerangkan faedah standard RAM baharu untuk menara permainan Aug 17, 2024 pm 06:47 PM

Modul LPCAMM2 pertama untuk komputer riba telah pun dihantar, dan papan utama desktop juga dijangka akan dilengkapi dengan CAMM2 pada masa hadapan. CAMM2 dan LPCAMM2 tidak serasi antara satu sama lain, malah pada PC desktop, pelanggan perlu berhati-hati

Bagaimana untuk mengautomasikan tugas menggunakan PowerShell Bagaimana untuk mengautomasikan tugas menggunakan PowerShell Feb 20, 2024 pm 01:51 PM

Jika anda seorang pentadbir IT atau pakar teknologi, anda mesti sedar tentang kepentingan automasi. Khusus untuk pengguna Windows, Microsoft PowerShell ialah salah satu alat automasi terbaik. Microsoft menawarkan pelbagai alat untuk keperluan automasi anda, tanpa perlu memasang aplikasi pihak ketiga. Panduan ini akan memperincikan cara memanfaatkan PowerShell untuk mengautomasikan tugas. Apakah skrip PowerShell? Jika anda mempunyai pengalaman menggunakan PowerShell, anda mungkin telah menggunakan arahan untuk mengkonfigurasi sistem pengendalian anda. Skrip ialah koleksi arahan ini dalam fail .ps1. Fail .ps1 mengandungi skrip yang dilaksanakan oleh PowerShell, seperti Get-Help asas

Lima projek sumber terbuka bahasa Go yang dipilih untuk membawa anda meneroka dunia teknologi Lima projek sumber terbuka bahasa Go yang dipilih untuk membawa anda meneroka dunia teknologi Jan 30, 2024 am 09:08 AM

Dalam era perkembangan teknologi yang pesat hari ini, bahasa pengaturcaraan bermunculan seperti cendawan selepas hujan. Salah satu bahasa yang telah menarik perhatian ramai ialah bahasa Go, yang digemari oleh ramai pembangun kerana kesederhanaan, kecekapan, keselamatan serentak dan ciri-ciri lain. Bahasa Go terkenal dengan ekosistemnya yang kukuh dengan banyak projek sumber terbuka yang sangat baik. Artikel ini akan memperkenalkan lima projek sumber terbuka bahasa Go yang dipilih dan membawa pembaca untuk meneroka dunia projek sumber terbuka bahasa Go. KubernetesKubernetes ialah enjin orkestrasi kontena sumber terbuka untuk automatik

Keperluan pembangunan bahasa Go: 5 cadangan rangka kerja yang popular Keperluan pembangunan bahasa Go: 5 cadangan rangka kerja yang popular Mar 24, 2024 pm 01:15 PM

"Go Language Development Essentials: 5 Syor Rangka Kerja Popular" Sebagai bahasa pengaturcaraan yang pantas dan cekap, bahasa Go digemari oleh semakin ramai pembangun. Untuk meningkatkan kecekapan pembangunan dan mengoptimumkan struktur kod, ramai pembangun memilih untuk menggunakan rangka kerja untuk membina aplikasi dengan cepat. Dalam dunia bahasa Go, terdapat banyak rangka kerja yang sangat baik untuk dipilih. Artikel ini akan memperkenalkan 5 rangka kerja bahasa Go yang popular dan menyediakan contoh kod khusus untuk membantu pembaca memahami dan menggunakan rangka kerja ini dengan lebih baik. 1.GinGin ialah rangka kerja web yang ringan dengan pantas

Bagaimanakah java memulakan permintaan http dan memanggil siaran dan mendapatkan antara muka? Bagaimanakah java memulakan permintaan http dan memanggil siaran dan mendapatkan antara muka? May 16, 2023 pm 07:53 PM

1. Java calls post interface 1. Gunakan URLConnection atau HttpURLConnection yang disertakan dengan java Tidak perlu memuat turun pakej jar lain Jika kod respons antara muka diubah oleh pelayan, mesej kembali tidak boleh diterima hanya diterima apabila kod respons adalah betul untuk mengembalikan publicstaticStringsendPost(Stringurl,Stringparam){OutputStreamWriterout=null;BufferedReaderin=null;StringBuilderresult=newSt.

Masalah skrin biru disebabkan oleh pengurusan memori win10 Masalah skrin biru disebabkan oleh pengurusan memori win10 Dec 30, 2023 pm 07:11 PM

Sistem win10 adalah sistem yang sangat baik yang patut digunakan, keserasian yang kuat dan kecerdasan tinggi boleh memastikan bahawa pada dasarnya tidak akan ada masalah dalam penggunaan sistem win10 Namun, baru-baru ini, ramai rakan telah melaporkan bahawa komputer mereka sering mempunyai cakera biru . Dan ia sentiasa menggesa pengurusan memori kod ralat Apa yang berlaku? Hari ini, editor akan membawakan anda penyelesaian kepada skrin biru yang kerap dalam win10 dan kod penamatan pengurusan memori Jika anda memerlukan permainan, datang dan lihat. Penyelesaian kepada skrin biru win10memorymanagement: Penyelesaian 1: 1. Gunakan "Kekunci Win + R" + masukkan "control + enter" untuk memasuki permukaan kawalan

Melaksanakan penjadualan tugas teragih menggunakan rangka kerja web Golang rangka kerja Echo Melaksanakan penjadualan tugas teragih menggunakan rangka kerja web Golang rangka kerja Echo Jun 24, 2023 am 11:49 AM

Dengan perkembangan Internet dan kemajuan teknologi maklumat, era data besar telah tiba, dan bidang seperti analisis data dan pembelajaran mesin juga telah digunakan secara meluas. Dalam bidang ini, penjadualan tugas adalah masalah yang tidak dapat dielakkan. Cara untuk mencapai penjadualan tugas yang cekap adalah penting untuk meningkatkan kecekapan. Dalam artikel ini, kami akan memperkenalkan cara menggunakan rangka kerja web Golang rangka kerja Echo untuk melaksanakan penjadualan tugas teragih. 1. Pengenalan kepada rangka kerja Echo Echo ialah rangka kerja GoWeb berprestasi tinggi, berskala dan ringan. Ia berdasarkan HTTP

Contoh arahan Curl Get Contoh arahan Curl Get Mar 20, 2024 pm 06:56 PM

Di Linux, klien URL atau Curl ialah utiliti baris arahan popular yang membolehkan anda memindahkan data melalui rangkaian menggunakan pelbagai protokol seperti HTTPS, HTTP, FTP, dsb. Ia membolehkan anda menghantar dan menerima data menggunakan kaedah dapatkan, pos dan permintaannya. Antaranya, anda perlu kerap menggunakan kaedah "dapat". Oleh itu, menjadi penting untuk mempelajari pelbagai kaedah dan pelbagai pilihan yang boleh anda gunakan untuk meningkatkan produktiviti anda. "Melaksanakan operasi curl adalah semudah memasukkan beberapa arahan mudah. ​​Walaupun nampak mudah, ramai pengguna tidak menyedari sepenuhnya potensinya. Oleh itu, panduan ringkas ini memberikan beberapa maklumat tentang cara melakukan operasi curl pada sistem Linux. Contoh menggunakan " curlget" arahan "Curl.

See all articles