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

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

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

瀏覽:191日期: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 可能根沒有了(已經被回收了)。

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

github.com/zhangyue050…

相關文章

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

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

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

標簽: PHP
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国内精品99| 国产日韩一区| 另类专区亚洲| 国产极品一区| 伊人网在线播放| 精品国产亚洲一区二区在线观看| 国产福利一区二区精品秒拍| 麻豆精品久久久| 国产夫妻在线| av一区二区高清| 亚州av日韩av| 国产精品18| 日韩伦理福利| 亚洲精品成人| 日韩不卡一二三区| 嫩草伊人久久精品少妇av杨幂| 国产一区二区三区四区五区 | 久热精品在线| 日韩一区二区三区在线看| 久久精品99久久久| 国产一区二区三区四区二区| 精品国产18久久久久久二百| 久久久久久免费视频| 伊人久久婷婷| 久久激情五月激情| 精品亚洲a∨| 91精品国产成人观看| 欧美久久精品一级c片| 综合激情网站| 欧美成a人片免费观看久久五月天| 国产一区福利| 欧美福利在线| 亚洲深爱激情| 国产美女精品视频免费播放软件| 黄毛片在线观看| 亚洲ab电影| 日韩高清成人| 日韩有吗在线观看| 欧美片第1页| 日韩激情综合| 欧美aa在线观看| 日韩欧美激情电影| 日本久久成人网| 日韩avvvv在线播放| 成人久久一区| 国产精品18| 丝袜国产日韩另类美女| 国产欧美日韩一级| 91精品国产91久久久久久黑人| 日韩中文av| 亚洲一级影院| 精品久久国产一区| 亚洲aⅴ网站| 久久久久国产| 美女视频免费精品| 免费在线观看精品| 久久久久国产精品一区二区| 日韩精品第一| 国产精品免费看| 91精品韩国| 国产精品毛片aⅴ一区二区三区| 夜夜嗨一区二区三区| 精品国产乱码久久久久久樱花| 日韩专区一卡二卡| 另类专区亚洲| 久久精品国产网站| 日韩二区三区在线观看| 在线综合亚洲| 久久青草久久| 97精品一区二区| 国产九九精品| 欧美一级全黄| 亚洲精品自拍| 尤物精品在线| 欧美成人日韩| 999久久久91| 综合日韩av| 国产激情欧美| 国产精品嫩模av在线| 婷婷综合电影| 在线精品福利| 综合欧美亚洲| 久久高清免费观看| 亚洲免费播放| 欧美不卡视频| 蜜臀久久99精品久久一区二区| 91亚洲国产| 91视频精品| 国产日韩电影| 日本精品影院| 99久久亚洲精品| 久久三级福利| 97国产成人高清在线观看| 国模精品一区| 欧美天堂视频| 日韩免费一区| 亚洲精品国产嫩草在线观看 | 日韩国产专区| 欧美黄色网页| 91精品蜜臀一区二区三区在线| 91欧美在线| 成人精品亚洲| 91精品久久久久久久久久不卡| 人人精品亚洲| 久久影院一区| 伊人久久成人| 亚洲美女91| 国产欧美二区| 精品视频黄色| 日韩欧美一区二区三区在线观看| 久久国产影院| 尤物tv在线精品| 欧美专区一区二区三区| 日韩欧美2区| 久久av综合| 欧美aa在线观看| 在线一区视频| 亚洲精品进入| 欧美91在线| 久久久久中文| 蜜桃免费网站一区二区三区| 欧美精品国产| 中文在线资源| 国产视频一区免费看| 日韩精品成人| 精品99在线| 黄色免费成人| 国产精品久久久亚洲一区| 色婷婷亚洲mv天堂mv在影片| 亚洲手机在线| 日韩一区二区三区精品| 国产精品久久久久久久久久白浆 | 欧美三级网址| 久久都是精品| 卡一卡二国产精品| 国产一区日韩欧美| 日韩不卡一区二区三区| 亚洲综合电影| 天使萌一区二区三区免费观看| 日本视频中文字幕一区二区三区| 国产精品99视频| 水野朝阳av一区二区三区| 国产精一区二区| 欧美日韩激情| 欧美日本久久| 免费av一区二区三区四区| 日韩高清不卡在线| 韩国精品主播一区二区在线观看| 免费精品视频最新在线| 欧美精品aa| 欧洲激情综合| 免费视频一区二区三区在线观看| 成人午夜国产| 日韩超碰人人爽人人做人人添| 日韩精品永久网址| 欧美日韩a区| 亚洲精品小说| 精品无人区麻豆乱码久久久| 亚洲专区一区| 91日韩欧美| 日韩国产在线观看| 一区二区小说| 欧美国产另类| 免费欧美日韩| 久久久精品网| 麻豆91小视频| 日韩国产高清在线| 国产精品日韩欧美一区| 久久精品国产一区二区| 日韩精品一区第一页| 日韩成人三级| 欧美黄色一区二区| 婷婷五月色综合香五月| 伊人精品一区| 四季av一区二区凹凸精品| 日韩二区在线观看| 欧美专区在线| 激情综合激情| 欧美日韩国产v| 精品国产成人| 国产一级成人av| 在线一区二区三区视频| 久久亚洲在线| 国产成人精品一区二区三区视频 | 在线日韩欧美| 超碰在线99| 麻豆国产91在线播放| 日韩福利视频导航| 亚洲一二三区视频| 中文久久精品| 不卡在线一区| 久久久一二三| 免费在线小视频| 国产aⅴ精品一区二区四区| 欧美日韩伊人| 国产一级成人av| 婷婷成人av| 亚洲aa在线| 亚洲区欧美区| 综合国产精品|