PHP变量参考和内存使用情况 [英] PHP variables reference and memory usage

查看:88
本文介绍了PHP变量参考和内存使用情况的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

根据 php手册:

<?php
$a =& $b;
?>
// Note:
// $a and $b are completely equal here. $a is not pointing to $b or vice versa.
// $a and $b are pointing to the same place. 

我认为:

<?php
$x = "something";
$y = $x;
$z = $x;

应该消耗比以下更多的内存

should consume more memory than:

<?php
$x = "something";
$y =& $x;
$z =& $x;

因为,如果我理解正确的话,在第一种情况下,我们复制"值something并将其分配给具有最后3个变量和3个内容的$y$z,而在第二种情况下我们有3个变量pointing内容相同.

because, if i understood it right, in the first case we 'duplicate' the value something and assign it to $y and $z having in the end 3 variables and 3 contents, while in the second case we have 3 variables pointing the same content.

因此,使用如下代码:

$value = "put something here, like a long lorem ipsum";
for($i = 0; $i < 100000; $i++)
{
    ${"a$i"} =& $value;
}
echo memory_get_usage(true);

我希望内存使用率低于:

I expect to have a memory usage lower than:

$value = "put something here, like a long lorem ipsum";
for($i = 0; $i < 100000; $i++)
{
    ${"a$i"} = $value;
}
echo memory_get_usage(true);

但是两种情况下的内存使用情况都是相同的.

But the memory usage is the same in both cases.

我想念什么?

推荐答案

PHP在分配时不重复,但在写入时不重复.请参见使用PHP语言进行写时复制(2009年1月18日;由Toshiwa秋彦,Michiaki Tatsubori,Tamiya Onodera和Yasuhiko Minamide撰写; PDF文件),以对其进行科学讨论,

PHP does not duplicate on assignment, but on write. See Copy-on-Write in the PHP Language (Jan 18 2009; by Akihiko Tozawa, Michiaki Tatsubori, Tamiya Onodera and Yasuhiko Minamide; PDF file) for a scientific discussion of it, Do not use PHP references (Jan 10, 2010; by Jan Schlüter) for some fun and my own take is References to the Max with more references.

这篇关于PHP变量参考和内存使用情况的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆