当前位置: 首页 > 后端技术 > PHP

PHPCopyOnWrite(写入时复制)

时间:2023-03-29 17:04:55 PHP

先举个例子:显然这段代码执行后,$var_dup的值应该还是“laruence”,那么这是如何实现的呢??这就是PHP的写时复制机制:在修改一个变量之前,PHP会先检查该变量的refcount。如果引用计数大于1,PHP将执行一个单独的例程。对于上面的代码,当执行到第三行时,PHP发现$var指向的zval的refcount大于1,那么PHP会复制一个新的zval,将原zval的refcount减1,并修改symbol_table以便将$var和$var_dup分开(Separation)。这种机制就是所谓的写时复制(copyonwrite)。Copy-on-Write应用场景Copy-on-Write(也简称COW)有很多应用场景,比如Linux中进程复制中内存使用的优化,在各种编程语言中,比如C++STL等都有类似的应用程序。COW是一种常用的优化方法,可以归纳为:资源延迟分配。资源仅在真正需要时才使用,写时复制通常会减少资源使用。证明PHPCOW优化内存使用的例子: