假设一个对象具有大量数据的属性,在析构函数中取消属性是否更有效?还是让PHP释放该对象分配的内存?
class A {
protected $foo;
protected $bar;
protected $baz;
public function __construct()
{
$this->foo = big_amount_of_data();
$this->bar = reference_to_a_big_object();
$this->foo = data_from_big_file();
}
public function doProcess()
{
// do something
}
public function __destruct()
{
// Should I do this?
unset(
$this->foo,
$this->bar,
$this->baz
);
}
}
分配null比取消设置更好。它更快,如果有其他变量引用你要取消设置的变量,赋值为null实际上会释放内存,而取消设置不会-其他变量仍然具有数据和非空值
简单来说:不,你不应该那样做。
你最好让PHP对你的对象和它的变量做它想做的,当你销毁它,如果它只是为了恢复一些内存。
1)您永远无法确定使用unset
取消变量将直接返回已使用的内存。它可以是即时的(但也不是真的,它只是取决于垃圾收集器何时决定执行它的工作),也可以是几段时间之后,或者在脚本的最后,由于垃圾收集器的存在。这不是一个确定的方法来获得记忆,就是这样。