PHP中Copy on write是什麼意思?

2020-07-16 10:06:27

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中Copy on write是什麼意思?的詳細內容,更多請關注TW511.COM其它相關文章!