当从变量中定义变量并将对象实例转换为另一个变量时,PHP是否使用RAM?

当从变量中定义变量并将对象实例转换为另一个变量时,PHP是否使用RAM?,php,performance,variables,Php,Performance,Variables,如果我有这个密码 <?php $array = array(); for ($i=1;$i<100000;$i++){ $array[$i] = md5(rand(0,9999999999999999)); } $array2 = $array; $class大约需要0.5MB内存 . PHP进程是否需要1.0MB的$class2=$class 是一样的吗 测试: 这就是参考部分中PHP手册所警告的:引擎足够智能。设置$array2=$array不会导致重复存储,因

如果我有这个密码

<?php
$array = array();
for ($i=1;$i<100000;$i++){
    $array[$i] = md5(rand(0,9999999999999999));
}

$array2 = $array;
$class
大约需要0.5MB内存 . PHP进程是否需要1.0MB的
$class2=$class

是一样的吗

测试:


这就是参考部分中PHP手册所警告的:引擎足够智能。设置
$array2=$array不会导致重复存储,因为PHP认识到它们仍然是相同的。但是,请尝试使用
$array[2]='something;'之后。PHP检测到差异,然后才会复制值

<?php
$array = array();
for ($i=1;$i<100000;$i++){
    $array[$i] = md5(rand(0,9999999999999999));
}
echo memory_get_usage().PHP_EOL;
$array2 = $array;
echo memory_get_usage().PHP_EOL;
$array['foo'] = 'bar';
echo memory_get_usage().PHP_EOL;
//17252052
//17252156
//23776652

自己看看吧。请参阅get_memory_usage()@JohnCartwright:Wow。看起来它不是在模仿自己。看,@genesis:你需要为第一个变量、数组或对象编写另一个get_memory_usage()。你的代码没有任何作用。哎呀,我的意思是内存使用率()@Jitamaro:请看我的问题。它正在测试我有疑问的确切代码,它怎么可能为我保留内存?扩展?有没有一个选项可以杀死这种聪明的行为?我可以自己编译@创世记:编辑课堂答案。为什么需要更多?当然有一个随机因素,但这是一个精简且平均的命令行php脚本,而不是在Web服务器中,这是非常不同的。@Jitamaro:php的C源代码可用,请继续。我想不出你为什么要破坏这种行为。据我所知,到目前为止,这种行为还没有不良副作用。@genesis:你看,你需要3个内存才能使用!!!我想现在就投我帖子的一票,否则我就把它删除!!!
<?php
$array = array();
for ($i=1;$i<100000;$i++){
    $array[$i] = md5(rand(0,9999999999999999));
}
echo memory_get_usage().PHP_EOL;
$array2 = $array;
echo memory_get_usage().PHP_EOL;
$array['foo'] = 'bar';
echo memory_get_usage().PHP_EOL;
//17252052
//17252156
//23776652