一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務(wù)器之家:專注于服務(wù)器技術(shù)及軟件下載分享
分類導(dǎo)航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術(shù)|正則表達(dá)式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務(wù)器之家 - 編程語言 - PHP教程 - 總結(jié)PHP內(nèi)存釋放以及垃圾回收

總結(jié)PHP內(nèi)存釋放以及垃圾回收

2019-10-14 13:50Xavier PHP教程

本篇文章給大家分享了關(guān)于PHP寫程序的小技巧,關(guān)于內(nèi)存釋放以及垃圾回收的相關(guān)問題,有興趣的朋友學(xué)習(xí)下。

引用賦值

$a = 'apple';
$b = &$a;

上述代碼中,我將一個(gè)字符串賦值給變量a,然后將a的引用賦值給了變量b。顯然,這個(gè)時(shí)候的內(nèi)存指向應(yīng)該是這樣的:

$a -> 'apple' <- $b

a和b指向了同一塊內(nèi)存區(qū)域,我們通過 var_dump($a, $b) 得到 string(5) "apple" string(5) "apple" ,這是我們預(yù)期的結(jié)果。

unset 函數(shù)

假如我想將 'apple' 這個(gè)字符串從內(nèi)存中釋放掉。我是這么做的:

unset($a);

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

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

'apple' <- $b

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

直接回收

那要怎樣做才能真正釋放掉 'apple' 所占用的內(nèi)存呢?

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

當(dāng)然,還有更直接的方法:

$a = null;

直接賦值 null 會(huì)將將 $a 所指向的內(nèi)存區(qū)域置空,并將引用計(jì)數(shù)歸零,內(nèi)存便被釋放。

腳本執(zhí)行結(jié)束

php是腳本語言,當(dāng)腳本執(zhí)行結(jié)束之后,腳本內(nèi)使用的所有內(nèi)存都會(huì)被釋放。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 99视频导航| 午夜精品久久久久 | 亚洲国产精品网站久久 | 免费观看欧美成人h | 午夜深情在线观看免费 | 麻豆视频免费在线播放 | 视频在线观看一区二区三区 | 国产一区二区三区四卡 | 欧美va免费精品高清在线 | 厨房play黄瓜进去小说h | 色婷婷婷丁香亚洲综合不卡 | 国产日韩一区二区三区 | 亚洲10p | 免费一级国产生活片 | 2019国内自拍 | 4438全国最大成人网视频 | 婷婷九月 | 日本免费久久久久久久网站 | 欧美第十页 | 国产精品九九热 | 国产精品香蕉在线观看不卡 | 国产午夜亚洲精品 | 午夜在线观看免费完整直播网 | 四虎成人影院 | 国产精品露脸国语对白河北 | h版在线观看 | 国产亚洲精品日韩香蕉网 | 欧美成人禁片在线观看俄罗斯 | 秀婷程仪公欲息肉婷在线观看 | 免费成年视频 | 大伊香蕉精品视频一区 | 丝瓜视频在线观看污 | 风间由美被义子中文字幕 | 婷婷综合久久 | 国模娜娜a4u1546全套 | 四虎网站入口 | 日本高清色视影www日本 | 国产我不卡 | 精品丰满人妻无套内射 | 久久er国产精品免费观看2 | 秋霞综合网 |