[PHP] PHP5中的写时复制change on write
发布时间:2021-05-21 06:54:37 所属栏目:大数据 来源: https://www.jb51.cc
导读:PHP变量在赋值的时候是增加的引用计数,并不是又创建了一块内存空间 但是当新的变量值变更时,值从新赋予新的值时,就会减掉刚才的引用计数,并且从新创建内存空间. 上面的内容是显而易见的,重新赋值自然会重新创建内存空间,但是有一种情况也会发生这样的事,那就
PHP变量在赋值的时候是增加的引用计数,并不是又创建了一块内存空间 但是当新的变量值变更时,值从新赋予新的值时,就会减掉刚才的引用计数,并且从新创建内存空间. 上面的内容是显而易见的,重新赋值自然会重新创建内存空间,但是有一种情况也会发生这样的事,那就是在使用到引用符&的时候,也会发生复制. 例如下面的代码: <?PHP $a="shihan"; $b=$a$c=; xdebug_debug_zval('a','b'); a: (refcount=3,is_ref=0)='shihan'
b: (refcount=3,is_ref=0)='shihan'
$b=& b: (refcount=2,is_ref=1)='shihan' 下面这个$b=&$a会产生复制,当进行函数传参时,内容占用增大 <?; function test2($d){} test2($b); xdebug_debug_zval('a','b'); var_dump(memory_get_usage());//633208 <?var_dump(memory_get_usage());//633128 ? 当没有在函数内部更改这个值的需求时,不要用引用 ? (编辑:北几岛) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |