在 PHP 中,没有任何变量指向这个对象时,这个对象就成为垃圾。PHP 会将其在内存中销毁,这是 PHP 的 GC 垃圾处理机制,防止内存溢出。
当一个 PHP 线程结束时,当前占用的所有内存空间都会被销毁,当前程序中所有对象同时被销毁。GC 进程一般都跟着每起一个 SESSION 而开始运行的,gc 目的是为了在 session 文件过期以后自动销毁删除这些文件。
class Test{ | |
public function __construct(){ | |
echo __CLASS__. "Constructor is called."."</br>"; | |
} | |
public function __destruct(){ | |
echo __CLASS__."Destructor is called."."</br>"; | |
} | |
} | |
$testObj = new Test(); | |
for ($i = 0; $i < 10; ++$i) { | |
echo $i."<br />"; | |
} | |
$testObj = 123; | |
echo $testObj; | |
Test Constructor is called. | |
0 | |
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
Test Destructor is called. | |
123 |
当系统确定一个变量不再被使用时就会启动垃圾回收机制的。除非处于安全考虑 unset,否则没必要 unset。
当然,系统的垃圾回收机制不是那么的智能,当一个占用资源很大的变量,比如一个图片资源,在不用时应该立刻进行销毁。