加入收藏 | 设为首页 | 会员中心 | 我要投稿 北几岛 (https://www.beijidao.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

[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

?

当没有在函数内部更改这个值的需求时,不要用引用

?

(编辑:北几岛)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读