成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久

您的位置:首頁技術文章
文章詳情頁

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

瀏覽:157日期:2022-09-07 14:20:10

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

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

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

$a = new stdClass;$b = new stdClass;$c = new stdClass;echo memory_get_usage(), PHP_EOL; // 706528unset($a);echo memory_get_usage(), PHP_EOL; // 706488gc_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; // 706544unset($d);echo memory_get_usage(), PHP_EOL; // 706544gc_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
相關文章:
成人在线亚洲_国产日韩视频一区二区三区_久久久国产精品_99国内精品久久久久久久
欧美成人综合一区| 欧美成人一区二区在线| 亚洲免费在线| 久国产精品韩国三级视频| 欧美大片在线观看一区| 尤妮丝一区二区裸体视频| 日韩在线一区二区| 911精品国产一区二区在线| 99久久久国产精品| 天堂在线亚洲视频| 日韩欧美一二三| 久久精品女人| 成人短视频下载| 亚洲高清一区二区三区| 精品国产污污免费网站入口| 亚洲自拍高清| 91在线观看污| 久久精品国产亚洲高清剧情介绍| 国产精品久久网站| 91精品国产美女浴室洗澡无遮挡| 在线视频精品一区| 成人av电影在线播放| 麻豆成人久久精品二区三区红 | 欧美r级在线观看| 夜夜嗨一区二区三区| 99精品视频在线免费观看| 午夜欧美大尺度福利影院在线看| 久久久久国产精品免费免费搜索| 色婷婷综合久色| 国产一区91| 狠狠色噜噜狠狠色综合久| 成人高清在线视频| 精品一区二区三区视频在线观看| 亚洲成av人片www| 亚洲精品视频在线看| 国产日韩欧美精品一区| 日韩一级黄色大片| 老司机亚洲精品| 亚洲欧美日韩国产| 1024日韩| 亚洲精品影视| 99国产精品久久久久久久成人热 | 亚洲另类中文字| 国产精品女同一区二区三区| 久久九九久精品国产免费直播| 337p粉嫩大胆噜噜噜噜噜91av | 欧美中文字幕| 国产麻豆日韩| 中文国产一区| 国产一区二区三区久久| 日韩午夜黄色| 国产精品综合| 欧美性色黄大片| 在线播放视频一区| 91精品视频网| 国产日韩欧美综合一区| 中文字幕一区二区三区视频| 成人网在线免费视频| 国产精品久久久久永久免费观看 | 青青草97国产精品免费观看无弹窗版| 一区二区三区四区乱视频| 亚洲国产精品精华液网站| 亚洲第一会所有码转帖| 久久99久久精品| 成人妖精视频yjsp地址| 国产精品久久久久久久久久久免费看| 亚洲欧美色综合| 日本亚洲一区二区| 国产一区美女在线| 欧美 日韩 国产一区二区在线视频| 欧美婷婷久久| 久久av二区| 欧美一区三区四区| 精品国产精品网麻豆系列| 中文字幕一区二区三区蜜月| 视频一区视频二区中文字幕| 国产精品1区二区.| 亚洲精品一区二区三区樱花| 欧美午夜一区二区三区| 欧美一区二区三区婷婷月色| 欧美国产日韩一二三区| 亚洲va欧美va国产va天堂影院| 精品一区二区三区久久久| 欧美永久精品| 在线一区二区三区做爰视频网站| 欧美一区二区免费观在线| 国产精品视频线看| 日韩激情视频在线观看| 成人动漫在线一区| 国产精品一区二区在线观看 | 欧美va天堂在线| 蜜桃精品久久久久久久免费影院| 欧美变态tickle挠乳网站| 一区二区三区不卡在线观看 | 136国产福利精品导航网址| 色老汉av一区二区三区| 亚洲国产精品ⅴa在线观看| 秋霞午夜av一区二区三区| 国语自产精品视频在线看抢先版结局| 91成人免费电影| 亚洲免费在线视频一区 二区| 国产精品亚洲成人| 在线亚洲国产精品网站| 久久综合久久久久88| 麻豆91在线看| 亚洲精品看片| 中文字幕av资源一区| 国产91精品免费| 欧美色区777第一页| 综合自拍亚洲综合图不卡区| 成人黄色av电影| 欧美日韩成人在线| 午夜伦理一区二区| 亚洲精品孕妇| 亚洲青青青在线视频| 99精品偷自拍| 日韩午夜电影在线观看| 国产河南妇女毛片精品久久久| 日韩电影在线免费观看| 91久久国产自产拍夜夜嗨| 18欧美乱大交hd1984| 亚洲国产免费看| 国产一区二区中文字幕| 在线成人免费观看| 91猫先生在线| 亚洲成人精品一区| 在线不卡免费av| 99精品在线观看视频| 日本一区二区免费在线| 精品9999| 老司机精品视频一区二区三区| 欧美日韩高清一区二区三区| 精品久久久网站| 国产综合自拍| 日韩影院免费视频| 亚洲精品一区二区三区蜜桃下载| 99久久综合99久久综合网站| 欧美国产激情二区三区 | 亚洲日本va在线观看| 亚洲欧美日韩国产一区二区| 国产真实乱子伦精品视频| 久久婷婷综合激情| 一区二区激情| 激情成人综合网| 国产拍揄自揄精品视频麻豆 | 99久久免费国产| 专区另类欧美日韩| 欧美丰满高潮xxxx喷水动漫| 丁香亚洲综合激情啪啪综合| 国产精品视频在线看| 久久精品二区三区| 国产一区二区三区在线观看精品| 久久精品亚洲麻豆av一区二区| 国产精品久久九九| 国产一区在线观看麻豆| 日本一区二区视频在线观看| 免费永久网站黄欧美| 成人午夜免费视频| 亚洲综合一区二区三区| 日韩欧美亚洲国产精品字幕久久久| 亚洲人体大胆视频| 狠狠狠色丁香婷婷综合激情 | 欧美bbbbb| 国产欧美一区二区精品性色| 久久一区亚洲| 国产精品v日韩精品v欧美精品网站| 日韩精品福利网| 国产日产精品一区| 在线观看91av| 久久性天堂网| 黄色成人91| www.日韩精品| 久久97超碰国产精品超碰| 亚洲人成网站影音先锋播放| 欧美日本韩国一区二区三区视频| 丝袜国产日韩另类美女| 国产精品va| 欧美精品二区三区四区免费看视频| 91视频xxxx| 99久久国产综合精品色伊| 国产福利精品一区二区| 国产一区二区在线看| 狠狠色综合日日| 免费高清在线视频一区·| 亚洲一卡二卡三卡四卡无卡久久| 国产亚洲精品精华液| 91精品国产综合久久久蜜臀图片 | 欧美日韩中文精品| 久久精品二区| 在线视频你懂得一区| 在线亚洲高清视频| 91久久一区二区| 久久久精品网| 宅男噜噜噜66国产日韩在线观看| 国内成+人亚洲| 欧美激情日韩| 欧美激情综合| 国产精品欧美日韩一区| 国产精品久久久久久久久婷婷| 一本久道综合久久精品|