PHP中的写时复制理解-copy on write ,change on write
<?php
$mc = memory_get_usage();
//$x = null; // 一个 变量占用 136 byte
$param = array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,);
$var_dup = $param;
$md = memory_get_usage();
var_dump($md - $mc);
// $var = "laruence";
// $var_dup = &$var;
// debug_zval_dump($var);
执行结果:
int(5472)
使用引用后内存空间将近翻倍:
<?php
$mc = memory_get_usage();
$param = array(1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1,);
$var_dup = $param;
$var_dupx = &$param;
$md = memory_get_usage();
var_dump($md - $mc);
执行结果:
int(9128)
综上, 引用使用不当,将使内存占用猛增
想知道原理的话戳这里: http://www.laruence.com/2008/09/19/520.html