,即Copy On Write
当只是变量的赋值或者定义时 , 不会开辟新的内存空间来保存相同变量值 , 比如:
$a = range(0,9999);
$b = $a;
这里b变量不会产生新的内存空间单独存储
如果a的值发生了修改:
$a = range(0,9999);
$b = $a ;
$a = range(0,9999);//对a的值进行了写操作 , 会开辟新的内存空间
验证自己的想法可以使用 memory_get_usage() 函数打印查看
$a = range(0,1000);
var_dump(memory_get_usage());
$b = &$a;
var_dump(memory_get_usage());
$a = range(0,1000);
var_dump(memory_get_usage());
// 结果
int(430576)
int(430640)
int(430640)
由于b变量引用了a变量 , 当a变量发生改变后 , 继续引用新的a变量 , 直接改变当前内存空间存储的变量值, 所以没有触发COW机制