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

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

PHP特點(diǎn)之垃圾回收機(jī)制3——性能方面考慮的因素

瀏覽:16日期:2022-09-15 14:53:32

在上一節(jié)我們已經(jīng)簡(jiǎn)單的提到:回收可能根有細(xì)微的性能上影響,但這是把PHP 5.2與PHP 5.3比較時(shí)才有的。盡管在PHP 5.2中,記錄可能根相對(duì)于完全不記錄可能根要慢些,而PHP 5.3中對(duì) PHP run-time 的其他修改減少了這個(gè)性能損失。

這里主要有兩個(gè)領(lǐng)域?qū)π阅苡杏绊憽5谝粋€(gè)是內(nèi)存占用空間的節(jié)省,另一個(gè)是垃圾回收機(jī)制執(zhí)行內(nèi)存清理時(shí)的執(zhí)行時(shí)間增加(run-time delay)。我們將研究這兩個(gè)領(lǐng)域。

內(nèi)存占用空間的節(jié)省

首先,實(shí)現(xiàn)垃圾回收機(jī)制的整個(gè)原因是為了,一旦先決條件滿(mǎn)足,通過(guò)清理循環(huán)引用的變量來(lái)節(jié)省內(nèi)存占用。在PHP執(zhí)行中,一旦根緩沖區(qū)滿(mǎn)了或者調(diào)用 gc_collect_cycles()函數(shù)時(shí),就會(huì)執(zhí)行垃圾回收。在下圖中,顯示了下面腳本分別在PHP 5.2 和 PHP 5.3環(huán)境下的內(nèi)存占用情況,其中排除了腳本啟動(dòng)時(shí)PHP本身占用的基本內(nèi)存。

Example #1 內(nèi)存使用示例

<?php class Foo {public $var = ’3.1415962654’; } $baseMemory = memory_get_usage(); for ( $i = 0; $i <= 100000; $i++ ) {$a = new Foo;$a->self = $a;if ( $i % 500 === 0 ){ echo sprintf( ’%8d: ’, $i ), memory_get_usage() - $baseMemory, 'n';} }?>PHP特點(diǎn)之垃圾回收機(jī)制3——性能方面考慮的因素

在這個(gè)很理論性的例子中,我們創(chuàng)建了一個(gè)對(duì)象,這個(gè)對(duì)象中的一個(gè)屬性被設(shè)置為指回對(duì)象本身。在循環(huán)的下一個(gè)重復(fù)(iteration)中,當(dāng)腳本中的變量被重新復(fù)制時(shí),就會(huì)發(fā)生典型性的內(nèi)存泄漏。在這個(gè)例子中,兩個(gè)變量容器是泄漏的(對(duì)象容器和屬性容器),但是僅僅能找到一個(gè)可能根:就是被unset的那個(gè)變量。在10,000次重復(fù)后(也就產(chǎn)生總共10,000個(gè)可能根),當(dāng)根緩沖區(qū)滿(mǎn)時(shí),就執(zhí)行垃圾回收機(jī)制,并且釋放那些關(guān)聯(lián)的可能根的內(nèi)存。這從PHP 5.3的鋸齒型內(nèi)存占用圖中很容易就能看到。每次執(zhí)行完10,000次重復(fù)后,執(zhí)行垃圾回收,并釋放相關(guān)的重復(fù)使用的引用變量。在這個(gè)例子中由于泄漏的數(shù)據(jù)結(jié)構(gòu)非常簡(jiǎn)單,所以垃圾回收機(jī)制本身不必做太多工作。從這個(gè)圖表中,你能看到 PHP 5.3的最大內(nèi)存占用大概是9 Mb,而PHP 5.2的內(nèi)存占用一直增加。

執(zhí)行時(shí)間增加(Run-Time Slowdowns)

垃圾回收影響性能的第二個(gè)領(lǐng)域是它釋放已泄漏的內(nèi)存耗費(fèi)的時(shí)間。為了看到這個(gè)耗時(shí)時(shí)多少,我們稍微改變了上面的腳本,有更多次數(shù)的重復(fù)并且刪除了循環(huán)中的內(nèi)存占用計(jì)算,第二個(gè)腳本代碼如下:

Example #2 GC performance influences

<?php class Foo {public $var = ’3.1415962654’; } for ( $i = 0; $i <= 1000000; $i++ ) {$a = new Foo;$a->self = $a; } echo memory_get_peak_usage(), 'n';?>

我們將運(yùn)行這個(gè)腳本兩次,一次通過(guò)配置zend.enable_gc 打開(kāi)垃圾回收機(jī)制時(shí),另一次是它關(guān)閉時(shí)。

Example #3 Running the above script

time php -dzend.enable_gc=0 -dmemory_limit=-1 -n example2.php# andtime php -dzend.enable_gc=1 -dmemory_limit=-1 -n example2.php

在我的機(jī)器上,第一個(gè)命令持續(xù)執(zhí)行時(shí)間大概為10.7秒,而第二個(gè)命令耗費(fèi)11.4秒。時(shí)間上增加了7%。然而,執(zhí)行這個(gè)腳本時(shí)內(nèi)存占用的峰值降低了98%,從931Mb 降到 10Mb。這個(gè)基準(zhǔn)不是很科學(xué),或者并不能代表真實(shí)應(yīng)用程序的數(shù)據(jù),但是它的確顯示了垃圾回收機(jī)制在內(nèi)存占用方面的好處。好消息就是,對(duì)這個(gè)腳本而言,在執(zhí)行中出現(xiàn)更多的循環(huán)引用變量時(shí),內(nèi)存節(jié)省的更多的情況下,每次時(shí)間增加的百分比都是7%。

PHP內(nèi)部 GC 統(tǒng)計(jì)信息

在PHP內(nèi)部,可以顯示更多的關(guān)于垃圾回收機(jī)制如何運(yùn)行的信息。但是要顯示這些信息,你需要先重新編譯PHP使benchmark和data-collecting code可用。你需要在按照你的意愿運(yùn)行./configure前,把環(huán)境變量CFLAGS設(shè)置成-DGC_BENCH=1。下面的命令串就是做這個(gè)事:

Example #4 Recompiling PHP to enable GC benchmarking

export CFLAGS=-DGC_BENCH=1./config.nicemake cleanmake

當(dāng)你用新編譯的PHP二進(jìn)制文件來(lái)重新執(zhí)行上面的例子代碼,在PHP執(zhí)行結(jié)束后,你將看到下面的信息:

Example #5 GC statistics

GC Statistics-------------Runs: 110Collected: 2072204Root buffer length: 0Root buffer peak: 10000 Possible Remove from MarkedRoot Buffered buffer grey -------- -------- ----------- ------ZVAL 7175487 1491291 1241690 3611871ZOBJ 28506264 1527980 677581 1025731

主要的信息統(tǒng)計(jì)在第一個(gè)塊。你能看到垃圾回收機(jī)制運(yùn)行了110次,而且在這110次運(yùn)行中,總共有超過(guò)兩百萬(wàn)的內(nèi)存分配被釋放。只要垃圾回收機(jī)制運(yùn)行了至少一次,根緩沖區(qū)峰值(Root buffer peak)總是10000.

結(jié)論

通常,PHP中的垃圾回收機(jī)制,僅僅在循環(huán)回收算法確實(shí)運(yùn)行時(shí)會(huì)有時(shí)間消耗上的增加。但是在平常的(更小的)腳本中應(yīng)根本就沒(méi)有性能影響。

然而,在平常腳本中有循環(huán)回收機(jī)制運(yùn)行的情況下,內(nèi)存的節(jié)省將允許更多這種腳本同時(shí)運(yùn)行在你的服務(wù)器上。因?yàn)榭偣彩褂玫膬?nèi)存沒(méi)達(dá)到上限。

這種好處在長(zhǎng)時(shí)間運(yùn)行腳本中尤其明顯,諸如長(zhǎng)時(shí)間的測(cè)試套件或者daemon腳本此類(lèi)。同時(shí),對(duì)通常比Web腳本運(yùn)行時(shí)間長(zhǎng)的? PHP-GTK應(yīng)用程序,新的垃圾回收機(jī)制,應(yīng)該會(huì)大大改變一直以來(lái)認(rèn)為內(nèi)存泄漏問(wèn)題難以解決的看法。

標(biāo)簽: PHP
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
蜜桃视频第一区免费观看| 国产一区二区三区四区二区 | 欧美日韩夜夜| 国产精品av久久久久久麻豆网| 国产精品一级| 美美哒免费高清在线观看视频一区二区| 在线手机中文字幕| 国产精品久久国产愉拍| 日韩在线成人| 香蕉精品999视频一区二区| 香蕉视频亚洲一级| 精品国产一区二| 久久精品国产久精国产| 亚洲ww精品| 一区二区三区四区在线观看国产日韩| 欧美一区久久久| 97精品97| 国产视频网站一区二区三区| 精品丝袜在线| 国产粉嫩在线观看| 精品国产免费人成网站| 日韩成人a**站| 成人在线免费观看91| 久久一区欧美| 久久久久伊人| 久久精品三级| 久久精品欧洲| 欧美天堂一区二区| 日韩在线网址| 婷婷亚洲五月| 99精品在线观看| 日韩精品久久久久久久电影99爱| 国产精品色在线网站| 91精品福利观看| 国产日韩欧美一区二区三区| 日韩精品一级| 91精品国产自产在线丝袜啪| 国产午夜精品一区在线观看| 日韩一区二区三区免费视频| 日韩精品社区| **爰片久久毛片| 国产精品久久亚洲不卡| 美女毛片一区二区三区四区最新中文字幕亚洲 | 日本综合视频| 亚洲特级毛片| 色婷婷精品视频| 欧美日韩国产传媒| 六月天综合网| 亚洲免费在线| 日本久久二区| 国产精品nxnn| 98精品久久久久久久| 亚洲性色av| 亚洲婷婷免费| 久久香蕉精品| 欧美精品国产一区| 久久午夜影院| 久久久影院免费| 99久久久久| 在线精品福利| 日韩和欧美的一区| 麻豆一区二区三区| 日本欧美不卡| 蜜臀久久久久久久| 日本不卡中文字幕| 免费亚洲婷婷| 欧美色图国产精品| 蜜桃传媒麻豆第一区在线观看| 欧美精品三级在线| 久久久久久婷| 99亚洲视频| 亚洲人成精品久久久| 国产日产高清欧美一区二区三区| 伊人久久在线| 亚洲制服少妇| 综合激情在线| 欧美a一区二区| 九一成人免费视频| 久久精品xxxxx| 快播电影网址老女人久久| 久久国产成人| 欧美日韩一区二区三区四区在线观看| 国际精品欧美精品| 国产精品呻吟| 国产成人精品福利| 首页国产欧美日韩丝袜| 久久久精品国产**网站| 国产高清久久| 日本国产亚洲| 久久精品国产大片免费观看| 免费在线成人网| 国产一区一一区高清不卡| 国产亚洲在线观看| 久久精品国产免费| 成人av动漫在线观看| 97久久亚洲| 国内激情久久| 国产精品s色| 久久夜色精品| 亚洲天堂资源| 欧美伊人久久| 欧美日韩国产探花| 精品视频在线观看网站| 久久香蕉精品| 免费在线观看一区| 亚洲一区二区网站| 欧美一区二区三区高清视频| 国产一区白浆| 国产高潮在线| 亚洲午夜久久| 久久五月天小说| 国产精品资源| 亚洲综合不卡| 综合日韩av| 国产欧美日韩一级| av亚洲免费| 国产精品最新| 亚洲免费观看高清完整版在线观| 另类欧美日韩国产在线| 久久xxxx| 精品网站aaa| 91午夜精品| 亚洲欧洲一区二区天堂久久| 激情黄产视频在线免费观看| 热久久久久久| 欧美影院三区| 国产激情久久| 日本不卡一区二区| 99亚洲视频| 日韩av一级| 福利视频一区| 国产精品久久久免费| 免费一区二区视频| 免费欧美一区| 欧洲av不卡| 国产另类在线| 日韩综合小视频| 日韩视频在线一区二区三区| 亚洲精品国产嫩草在线观看| 精品久久久久中文字幕小说| 欧美日韩黄网站| 一区二区高清| 亚洲欧美视频| 亚洲一区日本| 国产女优一区| 日韩深夜视频| 国产一区观看| 亚洲www免费| 亚洲涩涩av| 免费精品国产的网站免费观看| 日本一二区不卡| 午夜日本精品| 久久久精品久久久久久96| 日韩另类视频| 亚洲国产日韩欧美在线| 性一交一乱一区二区洋洋av| 亚洲精一区二区三区| 欧美片第1页综合| 国产极品久久久久久久久波多结野| 麻豆一区二区三| 91一区二区| 午夜久久影院| 亚洲精品黄色| 久久精品国产亚洲aⅴ| 91看片一区| 亚洲一级高清| 亚洲精品在线二区| 久久不卡国产精品一区二区| 日韩精品中文字幕第1页| 伊人久久大香线蕉av超碰演员| 综合亚洲自拍| 精品国产亚洲一区二区三区在线 | 中文字幕系列一区| 久久亚洲美女| 国产精品久久久久久久免费软件| 精品视频自拍| 午夜在线一区| 免费一级欧美片在线观看网站| 极品av在线| 一二三区精品| 高清在线一区| 水野朝阳av一区二区三区| 久久超级碰碰| 国产精品丝袜xxxxxxx| 嫩呦国产一区二区三区av| 欧美成人日韩| 国产欧美视频在线| 日韩免费小视频| 国产精品久久久久久妇女| 91久久亚洲| 欧美日本精品| 日韩一区自拍| 日韩精彩视频在线观看| 国产精品亚洲二区| 亚洲成人国产| 91成人在线| 欧美日韩精品免费观看视频完整| 欧美日一区二区三区在线观看国产免| 久久久夜精品| 久久丁香四色|