PHP的内存管理
2018-04-08 14:51:59 小德 PHP 访问次数 338


PHP 采用引用计数写时复制进行内存管理。 引用计数保证变量不需要时将内存空间释放;写时复制保证变量间复制不浪费内存空间。

符号表:一个变量有两部分,变量名和实际的值。符号表将变量名映射到内存中的变量值所在的地址的数组。


当一个变量的值复制到另一个变量时,PHP没有为复制的值使用更多内存 ;更新符号表来说明两个变量拥有相同的内存块。

$work = ['fred',35,'ddd'];
$other = $work;   //数组不被复制  $work 和 $other的引用计数器  值为2

后来修改任意副本,PHP将分配所需内存进行复制

$work[1] = 222;  //值改变 数组被复制  $work 和 $other的引用计数器  值为1

符号表中的每一个值都有一个引用计数器,它的数值标识获取那片内存的方式的数目。


当一个变量离开作用域,它的值得引用计数器减1;当一个变量在其他内存空间被赋值时,引用计数器减1 ;当引用计数器为0时内存释放。