欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > PHP中垃圾回收相關函數的使用

PHP中垃圾回收相關函數的使用

熱門標簽:注冊400電話申請 百度商鋪地圖標注 釘釘打卡地圖標注 安裝電銷外呼系統 常州地圖標注服務商 地圖標注平臺怎么給錢注冊 新河科技智能外呼系統怎么樣 衡水外呼系統平臺 福州人工外呼系統哪家強

之前我們已經學習過 PHP 中的引用計數以及垃圾回收機制的概念。這些內容非常偏理論,也是非常常見的面試內容。而今天介紹的則是具體的關于垃圾回收的一些功能函數。關于之前的兩篇介紹文章,大家可以到文章底部查看。

再談循環引用以及強制清理循環引用

我們為什么要強調 “循環引用” 呢?其實,在默認情況下,我們直接 unset() 掉一個沒有被其他變量引用的變量時,就會讓這個變量的引用計數變為0。這時,PHP 默認的垃圾回收機制就會直接清除掉這個變量。比如:

$a = new stdClass;
$b = new stdClass;
$c = new stdClass;
echo memory_get_usage(), PHP_EOL; // 706528

unset($a);
echo memory_get_usage(), PHP_EOL; // 706488

gc_collect_cycles();
echo memory_get_usage(), PHP_EOL; // 706488

從上面的代碼中可以看出,我們 unset() 掉 $a 之后,內存直接就減少了。但是,如果是產生了循環引用的情況,那么簡單的進行 unset() 就沒有效果了。

class D{
    public $d;
}
$d = new D;
$d->d = $d;
echo memory_get_usage(), PHP_EOL; // 706544

unset($d);
echo memory_get_usage(), PHP_EOL; // 706544

gc_collect_cycles();
echo memory_get_usage(), PHP_EOL; // 706488

在這段代碼中,我們對 \$d 進行了一個簡單的循環引用賦值。使用 unset() 后,內存沒有發生變化,這時,只能使用 gc_collect_cycles() 函數來進行強制的循環引用清理,才能將 $d 里面的無效循環引用清除掉。

沒錯,這一段的重點正是 gc_collect_cycles() 這個函數。它在正常情況下對普通的變量引用是不會產生什么清理效果的,當然,對于普通的變量我們直接 unset() 掉就可以了。它最主要的作用就是針對循環引用的清理。之前我們學習過,循環引用計數會存在一個 根緩沖區 ,一般默認情況下它能容納 10000 個待清理的 可能根 。而 gc_collect_cycles() 的作用就是不用等這個 根緩沖區 滿就直接進行清理(個人理解)。關于這個垃圾回收算法的內容請移步:PHP垃圾回收機制的一些淺薄理解

其實,大部分情況下我們是不太需要關注 PHP 的垃圾回收問題的,也就是說,我們不是很需要手動地去調用這個 gc_collect_cycles() 函數。PHP-FPM 在每次調用完成后會直接整體的釋放,簡單的一次 CLI 腳本執行完也會全部釋放。沒錯,正常情況下,PHP 一次執行完成之后就會銷毀所有的內容,內存垃圾自然也就不存在了。但是,在執行長時間的守護腳本時,或者使用常駐進程的框架(Swoole)時,還是需要注意有沒有循環引用的問題。因為這種程序一直運行,如果存在大量循環引用對象時,就有可能導致內存泄露。

開啟、關閉及查看循環引用垃圾回收狀態

gc_disable();
echo gc_enabled(), PHP_EOL; //
gc_enable();
echo gc_enabled(), PHP_EOL; // 1

很簡單的三個函數,gc_disable() 是 “停用循環引用收集器”,gc_enable() 是“開啟循環引用收集器”,而 gc_enabled() 就是查看當前的循環引用收集器是否開啟。

強制回收Zend引擎內存管理器使用的內存

gc_mem_caches()

官網及網絡上并沒有什么詳細的介紹,不過從定義來看,它主要的作用就是回收 PHP 底層的 Zend 引擎內存管理器所使用過的內存。這個大家了解下就好,平常也從來沒用過。

獲取垃圾收集器的信息

$e = new stdClass;
for($i = 100;$i>0;$i--){
    $e->list[] = $e;
}

unset($e);
gc_collect_cycles();

var_dump(gc_status());
// array(4) {
//     ["runs"]=>int(1)
//     ["collected"]=>int(2)
//     ["threshold"]=>int(10001)
//     ["roots"]=>int(0)
// }

我們還是做了一個循環引用的對象,然后使用 gc_status() 來查看當前垃圾回收器中關于循環引用的狀態。從返回的內容可以看出, runs 運行了 1 個,collected 收集了 2 個, threshold 閾值是 10001,roots 可能根沒有了(已經被回收了)。

這個函數可以在測試環境中對代碼的運行情況進行檢查,查看我們代碼中有沒有不正常的循環引用情況,當然,上面的解釋也只是個人的推測,因為關于這方面的資料確實非常少。所以也希望深入研究過這方面內容的大神能夠留言指點迷津!!

測試代碼:

github.com/zhangyue050…

相關文章

//www.jb51.net/article/210943.htm

//www.jb51.net/article/210957.htm

以上就是PHP中垃圾回收相關函數的使用的詳細內容,更多關于PHP中垃圾回收相關函數的資料請關注腳本之家其它相關文章!

您可能感興趣的文章:
  • PHP的命令行擴展Readline相關函數的使用
  • PHP中斷言函數的使用詳解
  • 詳解各種PHP函數漏洞
  • PHP危險函數禁用深入詳解
  • PHP的imageTtfText()函數深入詳解
  • PHP執行系統命令函數實例講解
  • PHP之header函數詳解
  • php中sort函數排序知識點總結
  • php中rsort函數實例用法
  • 淺談定義一個PHP函數

標簽:克拉瑪依 六安 柳州 鷹潭 遼陽 鶴崗 白城 唐山

巨人網絡通訊聲明:本文標題《PHP中垃圾回收相關函數的使用》,本文關鍵詞  PHP,中,垃圾,回收,相關,函數,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《PHP中垃圾回收相關函數的使用》相關的同類信息!
  • 本頁收集關于PHP中垃圾回收相關函數的使用的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    午夜精品一区在线观看| 久久精品一区二区免费播放 | 制服下的诱惑暮生| 午夜精品福利在线视频| 欧美高清在线一区二区| 国产一区二区看久久| 日本欧美一区二区三区不卡视频| 精品久久人人做人人爱| 另类小说欧美激情| 影音先锋制服丝袜| 国产亲近乱来精品视频| 国产成人无遮挡在线视频| 国产一级淫片久久久片a级| 国产丝袜在线精品| 国产成人精品免费一区二区| 欧美大片xxxx| 亚洲蜜桃精久久久久久久| 99九九99九九九视频精品| 在线亚洲+欧美+日本专区| 一区二区三区国产精华| 不许穿内裤随时挨c调教h苏绵| 欧美精品九九99久久| 视频一区二区三区中文字幕| 国产熟妇久久777777| 久久婷婷国产综合精品青草| 国产精品亚洲视频| 91日韩中文字幕| 一区二区三区中文字幕| 成熟妇人a片免费看网站| 日韩午夜在线影院| 精品一区二区三区在线播放 | 欧美激情在线看| 成人午夜电影小说| 欧美日韩一区二区三区高清| 日韩电影在线观看电影| www.99热| 亚洲欧美电影一区二区| 污污内射在线观看一区二区少妇 | 狠狠色丁香九九婷婷综合五月| 亚洲欧美精品久久| 亚洲精品免费播放| 丰满少妇一区二区三区| 国产区在线观看成人精品| 99re成人在线| 欧美一区二区福利在线| 国产一区二区按摩在线观看| 色美美综合视频| 视频一区中文字幕| 国产三级精品三级观看| 亚洲黄色免费电影| 精品少妇一区二区三区免费观| 国产精品区一区二区三| 乱码一区二区三区| 国产喷白浆一区二区三区| 91一区二区在线| 精品久久久三级丝袜| 成年人网站91| 欧美大片拔萝卜| av福利精品导航| 欧美r级在线观看| 白白色 亚洲乱淫| 日韩欧美国产综合一区| 成人高清免费观看| 日韩一区二区免费在线观看| 成人污视频在线观看| 日韩一区二区精品| 成人精品国产福利| 欧美tickling挠脚心丨vk| 92国产精品观看| 久久综合中文字幕| 亚洲成人精品在线播放| 亚洲国产精品成人综合色在线婷婷| 欧美午夜精品一区二区| 中文字幕不卡在线| 特级西西人体wwwww| 亚洲人妖av一区二区| 欧美 日韩 国产 成人 在线观看| 亚洲精品乱码久久久久久| 亚洲一二三精品| 日韩精品久久理论片| 色综合久久久久久久久久久| 精品在线观看视频| 666欧美在线视频| 99久久免费视频.com| 久久久国产午夜精品| 男男做爰猛烈叫床爽爽小说| 日韩理论片一区二区| 五月天精品视频| 丝瓜av网站精品一区二区| 色综合久久99| 国产福利一区二区三区在线视频| 日韩一区二区三区av| 国产吃瓜黑料一区二区| 亚洲欧洲成人自拍| 精品伦精品一区二区三区视频密桃| 视频一区二区三区在线| 欧美网站一区二区| 波多野结衣亚洲一区| 国产亚洲欧美激情| 能免费看av的网站| 五月天激情综合网| 欧美日韩在线播放三区四区| 99在线精品观看| 国产精品久久久久久久久久免费看| 国产伦理片在线观看| 喷白浆一区二区| 91精品国产欧美一区二区| 男插女视频网站| 亚洲欧美国产77777| 青青青在线免费观看| 国产成人精品免费在线| 国产偷国产偷亚洲高清人白洁| 久久精品国产亚洲AV熟女| 日韩高清不卡在线| 欧美一区二区三区免费视频 | 日韩黄色中文字幕| 美女视频网站久久| 欧美xxxx老人做受| wwwwww日本| 久久狠狠亚洲综合| 精品免费视频一区二区| a级在线观看视频| 男人的天堂亚洲一区| 日韩一级免费观看| 日韩精品卡通动漫网站| 免费av成人在线| 精品黑人一区二区三区久久| 丰满少妇一区二区| 精品一区二区三区久久久| 久久天天做天天爱综合色| 天天操天天舔天天射| 国产做a爰片久久毛片| 国产欧美一区二区精品仙草咪| 极品尤物一区二区| 国产成人av电影免费在线观看| 中文字幕精品一区二区三区精品| 国产极品美女在线| caoporn国产精品| 一区二区三区免费在线观看| 欧美视频一区二| 男男做爰猛烈叫床爽爽小说 | 欧美日韩免费不卡视频一区二区三区| 91视频在线看| 亚洲3atv精品一区二区三区| 日韩视频免费观看高清完整版 | 久久久综合激的五月天| 国产在线免费av| 成人性生交大片免费看在线播放| 日韩一区中文字幕| 欧美日韩视频专区在线播放| 特级西西人体wwwww| 韩国精品一区二区| 中文字幕一区二区三区四区不卡 | 色先锋aa成人| av在线天堂网| 美女脱光内衣内裤视频久久影院| 国产偷国产偷亚洲高清人白洁 | 一区二区视频在线| 欧美一级在线视频| 国产精品麻豆免费版现看视频| 成人国产精品免费网站| 亚洲福利一二三区| 久久综合av免费| 91视频免费在线看| 久久福利小视频| 国产精品一二三在| 亚洲综合激情另类小说区| 日韩精品在线一区二区| 欧美做爰啪啪xxxⅹ性| 国产午夜在线一区二区三区| 久久成人精品无人区| 成人免费在线视频| 日韩一区二区在线看| 青青青视频在线免费观看| 极品人妻一区二区| 狠狠色狠狠色合久久伊人| 亚洲精品成人悠悠色影视| 欧美成人女星排行榜| 色欲综合视频天天天| 欧美精品欧美极品欧美激情| 国产成人精品免费在线| 五月天视频一区| 国产精品福利电影一区二区三区四区| 欧美美女一区二区| 二区三区四区视频| 一级欧美一级日韩片| 成人高清在线视频| 久久国产免费看| 亚洲综合精品久久| 中文字幕第一页久久| 91精品国产综合久久久久| 老司机成人免费视频| 亚洲第九十七页| 97se狠狠狠综合亚洲狠狠| 国产一区二区在线观看免费| 亚洲高清不卡在线观看| 国产精品你懂的在线欣赏| 日韩免费一区二区| 欧美视频在线一区二区三区| 日韩av毛片在线观看|