PHP写时复制 Copy On Write

写时复制Copy on Write,也缩写为COW。

优点:省去了分配内存和管理内存地址的计算开销, 减少资源的占用

COW是常用的优化手段,可以归类于:资源延迟分配。只有在真正需要使用资源时才占用资源, 写时复制通常能减少资源的占用。

关于内存使用情况,可以使用php函数:memory_get_usage() 来进行查看

例子:

1
2
3
4
5
6
7
8
9
10
11
<?php
$a = range(0,1000);
//系统会给$a开辟一块内存空间
var_dump(memory_get_usage());
$b = $a;
//此时$b也指向了$a的空间,两个变量共用一块内存空间
var_dump(memory_get_usage());
$a = range(0, 1000);
//此时如果对$a或$b进行写操作时(不管值是否发生变化),会再拷贝一份新的空间出来
var_dump(memory_get_usage());
?>

1
2
3
4
执行结果为:
int(455664)
int(455696)
int(525384)

通过结果可以看出来,拷贝出新的内存空间后,内存占用量明显增加。