欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

PHP中寫時復制機制的示例分析-創(chuàng)新互聯(lián)

小編給大家分享一下PHP中寫時復制機制的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

創(chuàng)新互聯(lián)建站制作網(wǎng)站網(wǎng)頁找三站合一網(wǎng)站制作公司,專注于網(wǎng)頁設計,成都網(wǎng)站設計、網(wǎng)站制作,網(wǎng)站設計,企業(yè)網(wǎng)站搭建,網(wǎng)站開發(fā),建網(wǎng)站業(yè)務,680元做網(wǎng)站,已為上千服務,創(chuàng)新互聯(lián)建站網(wǎng)站建設將一如既往的為我們的客戶提供最優(yōu)質的網(wǎng)站建設、網(wǎng)絡營銷推廣服務!

什么是寫時復制(Copy On Write)?

答:在復制一個對象的時候并不是真正的把原先的對象復制到內存的另外一個位置上,而是在新對象的內存映射表中設置一個指針,指向源對象的位置,并把那塊內存的Copy-On-Write位設置為1.這樣,在對新的對象執(zhí)行讀操作的時候,內存數(shù)據(jù)不發(fā)生任何變動,直接執(zhí)行讀操作;而在對新的對象執(zhí)行寫操作時,將真正的對象復制到新的內存地址中,并修改新對象的內存映射表指向這個新的位置,并在新的內存位置上執(zhí)行寫操作。

這個技術需要跟虛擬內存和分頁同時使用,好處就是在執(zhí)行復制操作時因為不是真正的內存復制,而只是建立了一個指針,因而大大提高效率。但這不是一直成立的,如果在復制新對象之后,大部分對象都還需要繼續(xù)進行寫操作會產(chǎn)生大量的分頁錯誤,得不償失。所以COW高效的情況只是在復制新對象之后,在一小部分的內存分頁上進行寫操作。

在PHP 內核中同樣使用了寫時復制機制來避免在賦值時導致內存增加,比如我們在使用foreach循環(huán)體時,可以發(fā)現(xiàn)其中的奧秘,示例代碼:

$m1 = memory_get_usage();
$str=<<<EOF
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
EOF;
$arr = explode("\n", $str);
$count=0;
foreach($arr as $v){
    $count++;
    //$v='aaaaaaaaaaaaaa';
}
$m2 = memory_get_usage();
echo $m2-$m1;


當我們執(zhí)行此代碼時會得到內存占用為:788

復制代碼 代碼如下:

$m1 = memory_get_usage();
$str=<<<EOF
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
EOF;
$arr = explode("\n", $str);
$count=0;
foreach($arr as $v){
$count++;
$v='aaaaaaaaaaaaaa';
}
$m2 = memory_get_usage();
echo $m2-$m1;


當我們取消 //$v='aaaaaaaaaaaaaa';  的注釋,此時內存占用數(shù)值為:840,注意內存增長了。

復制代碼 代碼如下:

$m1 = memory_get_usage();
$str=<<<EOF
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
aaaaaaaaaaaaaa
EOF;
$arr = explode("\n", $str);
$count=0;
foreach($arr as &$v){
$count++;
//$v='aaaaaaaaaaaaaa';
}
$m2 = memory_get_usage();
echo $m2-$m1;


當我們將foreach中的$v 改寫為 &$v 時,不管是否注釋循環(huán)體中對$v的注釋,我們都可以得到內存占用為:788

這里就說明了COW機制的介入,當我們在foreach循環(huán)中純粹的只用到對$v 的讀操作時,PHP內核會將$v這個變量的內存地址指向到$arr中數(shù)組這一索引的內存地址,并沒有將數(shù)組中的數(shù)據(jù)復制一份給到變量$v,此時內存占用情況和使用&$v 是一樣的。但當我們在循環(huán)體內對$v進行寫操作時,寫時復制機制就被激活了,此時PHP會重新開辟一段內存空間給到$v變量,而將原先$v指向數(shù)組的內存地址給斷開了,此時內存必然就會增長了。

這里可以得出另外一個結論:當我們在讀取大數(shù)據(jù)的時候,要注意COW機制引入的內存增長影響,同樣避免不必要的對變量寫,可以提高代碼運行性能。

以上是“PHP中寫時復制機制的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

本文標題:PHP中寫時復制機制的示例分析-創(chuàng)新互聯(lián)
本文URL:http://aaarwkj.com/article8/gdjop.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導航、手機網(wǎng)站建設、企業(yè)建站、外貿網(wǎng)站建設、網(wǎng)站建設網(wǎng)站設計公司

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

商城網(wǎng)站建設
最新在线中文字幕av不卡| 韩国av电影免费观看| 国产亚洲欧美日韩激情在线| 日本中文字幕一二三四区| 老司机看片午夜久久福利| 亚洲成人精品青青香蕉| 久久成人免费在线电影| 中文字幕有码在线朋友| 国产美女主播在线精品一区| 国产女主播在线观看视频| 日韩一区二区三区成人| 久久亚洲国产成人精品性色| 国产一级二级三级亚洲| 在线观看免费在线观看免费| 人体蜜桃视频一区二区| 国内自拍一区二区三区| 麻豆剧传媒国产精选av| 色综合婷婷九月中文字幕| 色婷婷一区二区三区四| 日韩不卡一区二区在线观看| 久久热久久热在线视频| 日韩高清一级黄色大片网站| 麻豆片免费观看在线看| 福利成人午夜国产一区| 国产在线观看一区二区三区精品| 午夜精品三级一区二区三区| 久久精品性少妇一区二区三区| 伊人婷婷综合激情网| 精品女同一区二区三区网站 | 亚洲综合中文字幕精品| 婷婷久久香蕉毛片毛片| 婷婷精品国产欧美精品亚洲| 一区二区三区深夜福利| 在线视频天堂亚洲天堂| 亚洲欧美日韩精品二区| 日韩新片一区二区三区| 国产一区二区欧美久久| 久久久久久精品国产免费| 国产一级r内射视频播放| 少妇激情一区二区三区免费视频| 不卡的国产在线视频|