为什么引用使用更多的内存?
问题描述:
不应该让脚本使用更少的内存吗?为什么引用使用更多的内存?
function a(&$var);
使用比function a($var);
foreach($array as $k => &$v)
和使用更多的内存比foreach($array as $k => $v)
例如$var
使用24 MB更多的内存。 如果我按引用传递它,它采用27 MB
答
(不幸),而不能解释魔术详细Zend引擎内部的引擎盖下,我指的是documentation:
PHP中的引用是一种通过不同名称访问相同变量内容的方法。他们不像C指针;例如,您不能使用它们执行指针运算,它们不是实际的内存地址,等等。查看什么参考不是更多信息。相反,它们是符号表别名。请注意,在PHP中,变量名称和变量内容不同,因此相同的内容可能具有不同的名称。最接近的类比是Unix文件名和文件 - 变量名称是目录条目,而可变内容是文件本身。引用可以比喻为Unix文件系统中的硬链接。
我认为与unix文件系统的比较很容易理解。如果文件有多个名称,则需要额外的内存来存储这些名称。
你如何测量使用的内存? – Jocelyn 2013-03-27 02:08:45
memory_get_peak_usage – user1806244 2013-03-27 02:09:31
你在$ var中存储什么值? – Necrolyte2 2013-03-27 02:17:16