天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

PHP中copy on write寫時復制機制介紹

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

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

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

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

復制代碼 代碼如下:
$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;

當我們執行此代碼時會得到內存占用為: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';  的注釋,此時內存占用數值為: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 時,不管是否注釋循環體中對$v的注釋,我們都可以得到內存占用為:788

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

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

php技術PHP中copy on write寫時復制機制介紹,轉載需保留來源!

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

主站蜘蛛池模板: 黄色888 | 成人毛片在线播放 | BL文高H强交 | 国产成人cao在线 | 天美麻豆成人AV精品视频 | 抽插性奴中出乳精内射 | 少妇连续高潮抽搐痉挛昏厥 | 失禁 调教 刺激 哭喊男男 | 99精品电影一区二区免费看 | 国产AV电影区二区三区曰曰骚网 | 久久精品视频免费 | 两个人在线观看的视频720 | 麻豆免费观看高清完整视频在线 | 秋秋影视午夜福利高清 | 1级午夜影院费免区 | 俄罗斯黄色大片 | 麻豆AV福利AV久久AV | 亚洲爆乳少妇精品无码专区 | 射漂亮黑b丝女 | 骚浪插深些好烫喷了 | 亚洲成年人影院 | 日本又黄又裸一级大黄裸片 | 国产在线伊人 | 国产在线精品亚洲二品区 | 激情丛林电影完整在线 | 妈妈的朋友5在线观看免费完整版中文 | 1级午夜影院费免区 | 麻豆精品传媒卡一卡二传媒短视频 | 快播成电影人网址 | 久久精品一卡二卡三卡四卡视频版 | 天天狠狠色综合图片区 | 99视频在线免费观看 | 国产精品麻豆a啊在线观看 国产精品麻豆AV | 好大好硬好爽好深好硬视频 | 黄色三级在线 | 姑娘视频日本在线播放 | 亚洲AV无码乱码A片无码蜜桃 | 免费人妻无码AV不卡在线 | 999久久久无码国产精蜜柚 | 国产亚洲精品 在线视频 香蕉 | 成片在线看一区二区草莓 |