是的,它得到释放。
您可以通过使用检查:
function a() {
$var = "Hello World";
$content = "";
for ($i = 0; $i < 10000; $i++) {
$content .= $var;
}
print '<br>$content size:'.strlen($content);
print '<br>memory in function:'.memory_get_usage();
return null;
}
print '<br>memory before function:'.memory_get_usage();
a();
print '<br>memory after function:'.memory_get_usage();
输出:
功能PHP中使用273312个字节
memory before function:273312
$content size:110000
memory in function:383520
memory after function:273352
之前。
在功能完成之前,我们再次检查了内存使用情况,并使用了383520.
我们检查了$ content的大小,它是110000字节。
273312 + 110000 = 383312
其余的208字节来自其他变量(我们只计算$ content)
函数完成后,我们再次检查内存使用情况并返回(几乎(40字节差异))和以前一样。
40个字节的差异可能是函数声明和for循环声明。
* * *你不能这样问。你认为*有效*可能是不同的(很可能是你提出的BTW风格)在PHP中,实际上***是有效的*。 – hakre
嗯,我的意思是,只要显而易见变量不再被使用,就这样做。 –
更早。随着函数结束,所有本地*变量*都消失了。数据是否暂时存储在内存中并不重要。但要知道你需要更多地了解内存管理,我想这不是你的优势(请不要冒犯)。仅仅因为局部变量不再使用,从系统中立即取消分配内存块就太昂贵了。 – hakre