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

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

PHP特點之垃圾回收機制3——性能方面考慮的因素

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

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

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

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

首先,實現(xiàn)垃圾回收機制的整個原因是為了,一旦先決條件滿足,通過清理循環(huán)引用的變量來節(jié)省內(nèi)存占用。在PHP執(zhí)行中,一旦根緩沖區(qū)滿了或者調(diào)用 gc_collect_cycles()函數(shù)時,就會執(zhí)行垃圾回收。在下圖中,顯示了下面腳本分別在PHP 5.2 和 PHP 5.3環(huán)境下的內(nèi)存占用情況,其中排除了腳本啟動時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特點之垃圾回收機制3——性能方面考慮的因素

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

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

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

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';?>

我們將運行這個腳本兩次,一次通過配置zend.enable_gc 打開垃圾回收機制時,另一次是它關(guān)閉時。

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

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

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

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

Example #4 Recompiling PHP to enable GC benchmarking

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

當(dāng)你用新編譯的PHP二進制文件來重新執(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)計在第一個塊。你能看到垃圾回收機制運行了110次,而且在這110次運行中,總共有超過兩百萬的內(nèi)存分配被釋放。只要垃圾回收機制運行了至少一次,根緩沖區(qū)峰值(Root buffer peak)總是10000.

結(jié)論

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

然而,在平常腳本中有循環(huán)回收機制運行的情況下,內(nèi)存的節(jié)省將允許更多這種腳本同時運行在你的服務(wù)器上。因為總共使用的內(nèi)存沒達到上限。

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

標簽: PHP
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
国产精品激情电影| 欧美私人啪啪vps| 国产精品香蕉| 国产精品一区2区3区| 国产毛片久久| 男女男精品视频网| 欧美在线看片| 精品国产欧美日韩| 日韩av二区| 久久久一二三| 亚洲免费中文| 国产精品亚洲一区二区在线观看| 麻豆一区在线| 私拍精品福利视频在线一区| 尤物精品在线| 国产亚洲人成a在线v网站| 国产午夜久久av| 国产成人免费精品| 999久久久亚洲| 一区二区自拍| 国产精品久一| 99久久久久| 日本麻豆一区二区三区视频| 国产高清视频一区二区| 日韩在线精品| 亚洲一区二区三区久久久| 麻豆一区在线| 亚洲一区二区网站| 国产精品一区二区三区av麻| 91视频一区| 四虎精品一区二区免费| 高清一区二区三区av| 蜜桃av一区二区在线观看| 国产va免费精品观看精品视频| 欧美日韩免费看片| 日本vs亚洲vs韩国一区三区二区| 欧美亚洲日本精品| 欧美亚洲一级| 亚洲影视一区| 欧美日韩国产免费观看视频| 国产精品伦一区二区| 免费在线观看成人| 99久久激情| 精品国产18久久久久久二百| 亚洲精品福利| 日韩视频中文| 自由日本语亚洲人高潮| 日韩欧美网址| 精品高清久久| 日韩**一区毛片| 在线视频精品| 亚洲免费婷婷| 狠狠干综合网| 亚洲高清二区| 99久久激情| 欧美精选视频一区二区| 精品视频黄色| 欧美国产日韩电影| 欧美天堂在线| 国产美女撒尿一区二区| 日本欧美一区二区在线观看| 亚洲免费福利一区| 五月亚洲婷婷 | 91综合视频| 色婷婷亚洲mv天堂mv在影片| 精品一区二区三区中文字幕在线| 日本综合精品一区| 亚洲精品在线二区| 国产欧美日韩精品一区二区三区| 日韩av午夜在线观看| 国产精品一二| 国产96在线亚洲| 国产精品久久久久久久免费观看| 国产精品videossex久久发布 | 夜鲁夜鲁夜鲁视频在线播放| 久久久久91| 日韩中文字幕一区二区三区| 一区二区三区国产盗摄| 亚州av一区| 国产精选久久| 日韩av专区| 欧美日韩精品一本二本三本 | 亚洲尤物在线| 日韩欧美在线精品| 日韩av有码| 亚洲欧美高清| 国产精品视频3p| 蜜桃av.网站在线观看| 麻豆91精品| 免费一级欧美在线观看视频 | 色偷偷偷在线视频播放 | 久久久噜噜噜| 美国三级日本三级久久99| 国产精品久久久久久av公交车 | 日韩一区二区三区在线看| 国产剧情一区| 99国产精品自拍| 国产精品一区二区中文字幕| 日韩免费小视频| 视频一区二区三区入口| 久久精品国产福利| 久久久久久免费视频| 欧美日韩18| 久久国产精品久久w女人spa| 日韩欧美久久| 久久在线免费| 久久香蕉精品香蕉| 日本不卡视频在线| 国产高清一区二区| 久久不卡国产精品一区二区| 久久中文字幕二区| 欧美中文高清| 久久久久国产| 欧美亚洲综合视频| 亚洲一区久久| 久久在线电影| 麻豆精品蜜桃| 国产精品多人| 日韩精品高清不卡| 久久久久久自在自线| 91成人福利| 少妇精品久久久| 亚洲a成人v| 亚洲毛片视频| 欧美日韩高清| 激情欧美国产欧美| 国产精品毛片视频| 欧美成人aaa| 奇米狠狠一区二区三区| 国产精品7m凸凹视频分类| 久久青青视频| 日韩精品久久久久久久电影99爱| 精品久久国产一区| 国产+成+人+亚洲欧洲在线| 日韩av一区二区三区| 美国三级日本三级久久99| 免费人成精品欧美精品| 久久福利精品| 亚洲一区二区三区免费在线观看 | 免费在线欧美黄色| 日韩 欧美一区二区三区| 蘑菇福利视频一区播放| 日韩精品午夜| 欧美1区2区3区| 98精品久久久久久久| 国产日韩亚洲| 日韩在线黄色| 涩涩涩久久久成人精品| 99久久婷婷这里只有精品| 国产精品99一区二区三区| 日本成人在线一区| 日韩黄色av| 亚洲免费影院| 中文精品视频| 亚洲福利精品| 好看的av在线不卡观看| 欧美不卡在线| 欧美一区二区三区激情视频| 中文另类视频| 1000部精品久久久久久久久| 牛牛精品成人免费视频| 午夜在线视频一区二区区别| 日韩午夜精品| 日本一区二区中文字幕| 亚洲欧美日韩国产一区| 国产欧美日韩一级| 美女久久久精品| 亚洲黄色免费av| 日本免费一区二区三区四区| 欧美羞羞视频| 丝袜av一区| 欧美在线网站| 亚洲1区在线| 国产资源在线观看入口av| 亚洲女人av| 亚洲手机视频| 国产日韩免费| 99riav1国产精品视频| 国产伦理一区| 狠狠操综合网| 精品国产黄a∨片高清在线| 亚洲三级国产| 在线国产一区| 成人美女视频| 深夜福利一区| 亚洲免费网址| 欧美 日韩 国产精品免费观看| 91欧美日韩在线| 天堂精品久久久久| 国产精品国产三级国产在线观看| 另类国产ts人妖高潮视频| 国产精品一线| 免播放器亚洲| 中文一区二区| 四虎4545www国产精品| 精品黄色一级片| 亚洲18在线| 日本成人精品| 久久国产精品亚洲77777| 久久久夜夜夜|