麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 語言 > PHP > 正文

PHP中copy on write寫時復制機制

2024-09-04 11:50:24
字體:
來源:轉載
供稿:網友

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

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

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

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

$m1 = memory_get_usage();$str=<<<EOFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEOF;$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=<<<EOFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEOF;$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=<<<EOFaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaEOF;$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機制引入的內存增長影響,同樣避免不必要的對變量寫,可以提高代碼運行性能。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 97久久人人超碰caoprom | 国产精品一区在线观看 | 日本不卡一区二区三区在线观看 | 激情黄页 | 久久成人视屏 | 黄网站在线观 | 精品国产亚洲人成在线 | 久草在线视频首页 | 成年性羞羞视频免费观看 | 91精品国产91久久久 | 久草视频2| 91在线视频导航 | 一级国产免费 | 毛片视频免费观看 | 久久人人人 | 国产精品成人久久久久a级 欧美特黄一级高清免费的香蕉 | 国产一级一片免费播放 | 91精品国产综合久久久动漫日韩 | 4480午夜| 亚州精品天堂中文字幕 | 日本在线观看视频网站 | 逼特逼视频在线观看 | 欧美精品激情视频 | 欧美a在线观看 | 中文在线观看www | 黄色片免费在线播放 | 毛片在哪看 | 久久久噜噜噜久久熟有声小说 | 精品国产一区二区三区在线观看 | 97中文字幕第一一一页 | 一级免费 | 国产成人精品免费视频大全办公室 | 精品久久久久久久久久久久包黑料 | 黄色片网站在线免费观看 | 国产精品一区在线免费观看 | 羞羞草视频 | 久久中文免费 | 免费黄网站在线播放 | 久久久久夜色精品国产老牛91 | 久久精品一区二区三区不卡牛牛 | 青青草成人免费视频在线 |