国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > PHP > 正文

PHP內存釋放以及垃圾回收詳解

2020-03-24 16:08:00
字體:
來源:轉載
供稿:網友
本文主要給大家分享了關于PHP寫程序的小技巧,關于內存釋放以及垃圾回收的相關問題,有興趣的朋友學習下,希望能幫助到大家。

引用賦值


$a = apple $b = 

上述代碼中,我將一個字符串賦值給變量a,然后將a的引用賦值給了變量b。顯然,這個時候的內存指向應該是這樣的:


$a - apple - $b

a和b指向了同一塊內存區域,我們通過 var_dump($a, $b) 得到 string(5) apple string(5) apple ,這是我們預期的結果。

unset 函數

假如我想將 apple 這個字符串從內存中釋放掉。我是這么做的:


unset($a);

但是通過再次打印 $a $b 兩變量的信息,我得到了這樣的結果:Notice: Undefined variable: a 和 string(5) apple 。奇怪,$a $b 同時指向一塊內存區域,又明明將$a釋放了,為什么$b還是 apple 。

其實是這樣的,unset()這是將一個變量指針銷毀了,并沒有釋放掉那塊內存區域中存放的字符串,所以執行完操作之后,內存指向只是變成了這樣:


 apple - $b

要牢記重點: unset()并沒有釋放變量所指向的那塊內存,而只是將變量指針銷毀了。同時,將那塊內存的 引用計數 減1,當引用計數為0時,也就是說當那塊內存不被任何變量引用時,便會觸發php的垃圾回收。

直接回收

那要怎樣做才能真正釋放掉 apple 所占用的內存呢?

利用上述方法,我們可以在 unset($a) 之后再 unset($b) ,將內存區域的所有引用都銷毀,引用計數減為0了,自然就被php回收了。

當然,還有更直接的方法:


$a = null;

直接賦值 null 會將將 $a 所指向的內存區域置空,并將引用計數歸零,內存便被釋放。

腳本執行結束

php是腳本語言,當腳本執行結束之后,腳本內使用的所有內存都會被釋放。

相關推薦:

掌握php垃圾回收機制

PHP內置的垃圾回收

PHP之垃圾回收機制詳解


以上就是PHP內存釋放以及垃圾回收詳解的詳細內容,其它編程語言

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 达日县| 积石山| 富源县| 濮阳市| 仙居县| 古丈县| 洛浦县| 东方市| 昭苏县| 江陵县| 扬州市| 连州市| 宁德市| 咸阳市| 新巴尔虎右旗| 东阳市| 连城县| 郴州市| 色达县| 将乐县| 宜阳县| 涪陵区| 新巴尔虎右旗| 资中县| 临泉县| 奉化市| 观塘区| 樟树市| 平原县| 广南县| 图们市| 英山县| 左贡县| 应用必备| 惠安县| 宜兰县| 宜阳县| 剑河县| 德化县| 金秀| 辛集市|