首頁 >後端開發 >PHP問題 >PHP中Copy on write是什麼意思?

PHP中Copy on write是什麼意思?

coldplay.xixi
coldplay.xixi原創
2020-07-01 16:17:193133瀏覽

PHP中Copy on write的意思是在用變數對變數進行賦值時,這些相同值的變數指向同一塊內存,只有當這些指向同一塊記憶體的相同值,和變數中的某一個變數的值改變的時候,才需要進行變數分離。

PHP中Copy on write是什麼意思?

PHP中Copy on write的意思是:

寫時複製(Copy -on-Write,也縮寫為COW),顧名思義,就是在寫入時才真正複製一份記憶體進行修改。 COW最早應用在*nix系統中線程與記憶體使用的最佳化,後面廣泛的被使用在各種程式語言中,如C 的STL等。 

在PHP核心中,COW也是主要的記憶體最佳化手段。在前面關於變數和記憶體的討論中,引用計數對變數的銷毀與回收中起著至關重要的標識作用。引用計數存在的意義,就是為了使得COW可以正常運作,從而實現對記憶體的最佳化使用。

寫時複製優點:

是透過賦值的方式賦值給變數時不會申請新記憶體來存放新變數所保存的值,而是簡單的透過一個計數器來共用內存,只有在其中的一個引用指向變數的值發生變化時才申請新空間來保存值內容以減少對內存的佔用。

從PHP底層基礎資料結構來看

ref_count和is_ref是定義於zval結構體中; 

is_ref識別碼不是使用者使用& 的強制引用; 

ref_count是引用計數,用來識別此zval被多少變數引用,即寫入時複製的自動引用,為0時會被銷毀。

相關學習推薦:PHP程式設計從入門到精通

以上是PHP中Copy on write是什麼意思?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn