2013-03-27 50 views
3

不应该让脚本使用更少的内存吗?为什么引用使用更多的内存?

function a(&$var);使用比function a($var);

foreach($array as $k => &$v)和使用更多的内存比foreach($array as $k => $v)

例如$var使用24 MB更多的内存。 如果我按引用传递它,它采用27 MB

+1

你如何测量使用的内存? – Jocelyn 2013-03-27 02:08:45

+0

memory_get_peak_usage – user1806244 2013-03-27 02:09:31

+0

你在$ var中存储什么值? – Necrolyte2 2013-03-27 02:17:16

回答

2

(不幸),而不能解释魔术详细Zend引擎内部的引擎盖下,我指的是documentation

PHP中的引用是一种通过不同名称访问相同变量内容的方法。他们不像C指针;例如,您不能使用它们执行指针运算,它们不是实际的内存地址,等等。查看什么参考不是更多信息。相反,它们是符号表别名。请注意,在PHP中,变量名称和变量内容不同,因此相同的内容可能具有不同的名称。最接近的类比是Unix文件名和文件 - 变量名称是目录条目,而可变内容是文件本身。引用可以比喻为Unix文件系统中的硬链接。

我认为与unix文件系统的比较很容易理解。如果文件有多个名称,则需要额外的内存来存储这些名称。

相关问题