PHP中的写时复制理解-copy on write ,change on write

分类:PHP |

<?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