Điều quan trọng là bạn unset biến toàn cầu của bạn ngay khi bạn không cần chúng.
Bạn không cần gọi không được đặt rõ ràng cho các biến cục bộ và thuộc tính đối tượng vì chúng bị hủy khi hàm vượt quá phạm vi hoặc đối tượng bị hủy.
PHP giữ số tham chiếu cho tất cả các biến và phá hủy chúng (trong hầu hết các điều kiện) ngay sau khi số tham chiếu này chuyển thành 0. Các đối tượng có một số tham chiếu nội bộ và các biến tự (tham chiếu đối tượng) mỗi đối tượng có một số tham chiếu. Khi tất cả các tham chiếu đối tượng đã bị hủy bởi vì các tham chiếu của chúng có thể đạt 0, chính đối tượng đó sẽ bị hủy. Ví dụ:
$a = new stdclass; //$a zval refcount 1, object refcount 1
$b = $a; //$a/$b zval refcount 2, object refcount 1
//this forces the zval separation because $b isn't part of the reference set:
$c = &$a; //$a/$c zval refcount 2 (isref), $b 1, object refcount 2
unset($c); //$a zval refcount 1, $b 1, object refcount 2
unset($a); //$b refcount 1, object refcount 1
unset($b); //everything is destroyed
Nhưng xem xét kịch bản sau đây:
class A {
public $b;
}
class B {
public $a;
}
$a = new A;
$b = new B;
$a->b = $b;
$b->a = $a;
unset($a); //cannot destroy object $a because $b still references it
unset($b); //cannot destroy object $b because $a still references it
Những tài liệu tham khảo cyclic là nơi PHP 5.3 của đá thu gom rác trong Bạn có thể gọi một cách rõ ràng thu gom rác với gc_collect_cycles
..
Xem thêm Reference Counting Basics và Collecting Cycles trong hướng dẫn.