COW机制(copy-on-write)是一种内存优化手段,在php中也采用了这种方式来优化内存。
针对类型: 数组和 字符串
COW:写时复制,即只有当对其中一个或多个变量进行写操作的时候,才会复制一份内存,对其内容进行修改。
<?php
echo '程序开始时内存的使用情况:';
var_dump(memory_get_usage());
//定义一个变量a
$a = range(0, 9);
echo '定义变量a后内存的使用情况:';
var_dump(memory_get_usage());
//定义一个变量b,将变量a的值赋值给b
$b = $a; //使用相同的内存
echo '定义了变量b,将变量a的值赋值给b后,内存的使用情况:';
var_dump(memory_get_usage());
echo '修改a的值后,内存的使用情况:';
$a = range(9, 0);
var_dump(memory_get_usage());
打印结果:
当定义的变量b指向a的内存时
<?php
echo '程序开始时内存的使用情况:';
var_dump(memory_get_usage());
//定义一个变量a
$a = range(0, 9);
echo '定义变量a后内存的使用情况:';
var_dump(memory_get_usage());
//定义一个引用变量b,将变量a的值赋值给b
$b = &$a;
echo '定义了变量b,将变量a的值赋值给b后,内存的使用情况:';
var_dump(memory_get_usage());
echo '修改a的值后,内存的使用情况:';
$a = range(9, 0);
var_dump(memory_get_usage());
执行结果
第三步所增加的内存,只是 变量b所占的内存,而不是系统分配给b的一块地址内存