2011-11-03 31 views
11

根據php manualPHP變量引用和內存使用情況

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

要消耗更多的內存比:

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

,因爲,如果我的理解是對,在第一種情況下,我們'複製'值something並將其分配給$y$z最後有3個變量和3個內容,而在第二種情況下我們有3個變量pointing相同的內容。

所以,用類似代碼:

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

我希望有低於內存使用:

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

但內存使用量是在兩種情況下是相同的。

我錯過了什麼?

回答

3

PHP使用copy-on-write所以它不會使用更多的內存的重複的字符串,直到你修改它們。