日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

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

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

瀏覽:194日期: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
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美资源在线| 蜜桃成人av| 91精品99| 美女毛片一区二区三区四区| 亚洲电影在线| 999国产精品视频| 久久91导航| 久久久影院免费| 亚洲天堂成人| 国产精品外国| 亚洲欧洲av| 欧美日韩亚洲一区三区| 欧美一区精品| 美女在线视频一区| 色婷婷色综合| 日韩一区电影| 黄色在线网站噜噜噜| 免费在线小视频| 私拍精品福利视频在线一区| 色婷婷久久久| 9色精品在线| 蜜桃久久av一区| 日本欧美一区二区在线观看| 国产精品欧美在线观看| 97视频热人人精品免费| 久久久久午夜电影| 久久国产福利| 欧美精品三级在线| av综合电影网站| 亚洲一区二区三区高清| 91精品国产自产观看在线| 亚洲人成亚洲精品| 国产精品18| 99精品视频在线| 性欧美长视频| 国产精品观看| 亚洲午夜av| 亚洲另类av| 激情久久一区二区| 久久精品不卡| 天堂av一区| 精品久久久网| 亚洲高清影视| 国产欧美日韩亚洲一区二区三区| 日韩大片免费观看| 男女性色大片免费观看一区二区| 蜜臀国产一区二区三区在线播放| 卡一卡二国产精品| 久久一级电影| 日本免费新一区视频| av日韩中文| 亚洲我射av| 日本欧美国产| 色婷婷成人网| 久久久成人网| 国产日韩在线观看视频| 欧美亚洲精品在线| 久久精品99久久久| 欧美1区免费| 国产精品一区二区精品视频观看| 欧美va天堂| 日韩高清在线一区| 99精品视频在线| 国产另类在线| 在线亚洲成人| 成人在线免费观看91| 日韩影院精彩在线| 日韩欧美在线中字| 国产情侣一区| 婷婷亚洲综合| 国产一区调教| 天堂精品久久久久| 狠狠久久婷婷| 中文在线а√天堂| 国产剧情一区| 亚洲三级网址| 亚洲天堂黄色| 97精品视频在线看| 欧美有码在线| 午夜在线播放视频欧美| av资源中文在线| 国产欧美日韩一区二区三区四区| 亚洲一级在线| 肉色欧美久久久久久久免费看| 欧美一区二区三区久久| 石原莉奈在线亚洲三区| 久久视频精品| 日本а中文在线天堂| 久久国产精品免费精品3p | 蜜桃久久av一区| 久久久一二三| 岛国精品一区| 91综合久久爱com| 亚洲欧美不卡| 亚洲国产不卡| 久久香蕉国产| 日韩不卡免费高清视频| 国产精品二区影院| 国产一区 二区| 色综合视频一区二区三区日韩 | 国产精品白浆| 日韩福利在线观看| 亚洲日韩中文字幕一区| 在线一区欧美| 欧美成人亚洲| 久久激情中文| 久久精品免费一区二区三区| 韩国久久久久久| 久久精品国产网站| 久久99高清| 老司机精品视频网| 免费亚洲一区| 欧美激情福利| 久久精品国产精品亚洲毛片| 欧美激情一区| 精品美女久久| 精品国产麻豆| 成人在线免费观看91| 福利精品在线| 在线看片国产福利你懂的| 中文字幕成在线观看| 神马午夜在线视频| 日韩一区二区三区免费| 狠狠久久伊人中文字幕| av资源新版天堂在线| 蜜臀国产一区| 久久精品动漫| 性欧美69xoxoxoxo| 悠悠资源网久久精品| 午夜精品影院| 一区在线视频观看| 亚洲精品一区二区妖精| 欧美在线亚洲| 日韩一级欧洲| 免费看日韩精品| 午夜亚洲福利| 国产精久久久| 国产一区二区三区免费在线| 免费在线观看一区| 91av亚洲| 日韩午夜黄色| 日韩免费精品| 国产精品久久久久久av公交车| 国产精品一区二区精品视频观看| 欧美激情aⅴ一区二区三区| 久久精品免视看国产成人| 国产精品xx| 国产综合婷婷| 亚洲一区av| 国产日韩欧美一区二区三区| 久久精品二区亚洲w码| 亚洲不卡av不卡一区二区| 亚洲精品午夜av福利久久蜜桃| 在线亚洲观看| 欧美亚洲免费| 欧美激情国产在线| 日韩视频一区| 欧美在线首页| 日韩av福利| 亚洲一区日韩| 国产精品久久久久av蜜臀| 国产资源在线观看入口av| 最新日韩av| 国产欧美日韩亚洲一区二区三区| 国产传媒在线| 三级欧美在线一区| 国产精品久久久久久久久久齐齐 | 欧美精品资源| 石原莉奈在线亚洲三区| 久久99久久人婷婷精品综合| 久久精品91| 日韩精品国产欧美| 荡女精品导航| 久热综合在线亚洲精品| 国产精品宾馆| 激情综合网站| 国产欧美日本| 国产精品97| 91综合久久爱com| 日本韩国欧美超级黄在线观看| 亚洲三级在线| 日韩毛片视频| 亚洲精品进入| 日韩久久精品网| 日本欧美大码aⅴ在线播放| 美女网站视频一区| 日韩精品久久理论片| 中文字幕系列一区| 日韩视频1区| 99精品综合| 久久丁香四色| 亚洲欧美日韩在线观看a三区| 精品亚洲成人| 视频一区二区三区入口| 久久一区精品| 免费看精品久久片| 精品欠久久久中文字幕加勒比| 综合干狼人综合首页| 日韩国产网站| 青青国产91久久久久久|