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編程從入門到精通