我对几乎在任何地方都使用语言构造感到好奇unset()
,在那里我获取了内存或声明了一些变量(无论结构如何)。
我的意思是,当有人声明变量时,它应该什么时候真正留给GC,或者是unset()
?
示例 1:
<?php
$buffer = array(/* over 1000 elements */);
// 1) some long code, that uses $buffer
// 2) some long code, that does not use $buffer
?>
- 有没有
$buffer
可能影响第 2 点的表现? unset($buffer)
在进入第 2 点之前我真的需要(或应该)做吗?
示例 2:
<?php
function someFunc(/* some args */){
$buffer = new VeryLargeObject();
// 1) some actions with $buffer methods and properties
// 2) some actions without usage of $buffer
return $something;
}
?>
- 在进入第 2 点之前,我真的需要(或应该)
unset($buffer)
在someFunc()
身体内做吗? - 将
GC
释放 s 范围内的所有分配的内存(包括引用和对象)someFunc()
,何时函数将结束或将找到return
语句?
我对技术解释很感兴趣,但也欢迎代码风格的建议。
谢谢。