国产探花免费观看_亚洲丰满少妇自慰呻吟_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內存釋放以及垃圾回收詳解的詳細內容,其它編程語言

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

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 陆良县| 师宗县| 浪卡子县| 抚顺县| 淅川县| 寻乌县| 台州市| 调兵山市| 陇西县| 中牟县| 长治市| 衡阳市| 家居| 舒兰市| 龙泉市| 承德市| 屯留县| 南丹县| 上蔡县| 灵石县| 新邵县| 长岛县| 奉新县| 宣城市| 玛纳斯县| 宣威市| 江华| 启东市| 漳州市| 彩票| 洛隆县| 稷山县| 塘沽区| 滦南县| 南投市| 麻栗坡县| 团风县| 沂源县| 桦川县| 门源| 临江市|