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的一块地址内存
