Как работает Garbage Collector в PHP?

Ответ

PHP GC использует два механизма:

  1. Reference Counting - каждый zval имеет refcount. Когда refcount = 0, память освобождается немедленно. Это основной механизм.
  2. Cycle Collector - обнаруживает циклические ссылки (объект A ссылается на B, B на A). Запускается когда буфер корней заполняется (10,000 элементов).
// Циклическая ссылка - refcount никогда не станет 0
$a = new stdClass();
$b = new stdClass();
$a->ref = $b;
$b->ref = $a;
unset($a, $b); // refcount = 1, но объекты недоступны
// Cycle Collector найдет и освободит

Управление: gc_enable(), gc_disable(), gc_collect_cycles(). На долгоживущих процессах (workers, daemons) GC важен для предотвращения утечек.

🧠Квиз 🏆Лидеры 🎯Собесед. 📖Вопросы 📚База зн.