PHP 如何为变量分配和释放内存?
我想知道 PHP 何时释放用于变量的内存,
例如
function foo(){
$foo = 'data';
return $foo; // <- is the memory space for `$foo` emptied at this point?
}
它是否比以下速度慢
function foo(){
return 'data';
}
?
I was wondering when does PHP free the memory which is used for a variables
for example
function foo(){
$foo = 'data';
return $foo; // <- is the memory space for `$foo` emptied at this point?
}
is it slower than:
function foo(){
return 'data';
}
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
好吧,让我们来看看吧!
在 PHP 5.3.6 下,我的输出是:
然后
在丢弃输出的
demo1
和demo2
的初始调用期间内存的增加很可能是由于创建造成的存储内存使用的变量。然而,这里的底线是两个存储示例,其中直接返回数据并在返回数据之前将其分配给变量导致给定数据使用完全相同的内存。
结论:在这个简单的测试中,PHP 似乎足够聪明,不会不必要地复制字符串变量——尽管请注意两个函数之间的内存使用差异。仅声明
demo1
函数就比声明demo2
占用更多内存。确实有几百个字节。Well, let's find out!
Under PHP 5.3.6, my output is:
and then
It's very likely that the memory increase during the initial calls to
demo1
anddemo2
that discard the output is due to the creation of variables to store memory use.However, the bottom line here is the two storage examples, where both returning data directly and assigning it to a variable before returning it resulted in the same exact memory use for the given data.
Conclusion: PHP seems smart enough in this simple test to not needlessly copy string variables -- though do keep an eye on the memory use difference between the two functions. Just declaring the
demo1
function took more memory that declaringdemo2
. A few hundred bytes, really.