GSto is right ... Только сборщик PHP-файлов может освободить память. unset () переменная или установка ее в NULL может ускорить процесс «сбора garbadge» (по цене циклов ЦП), но нет никакого способа непосредственно освободить часть памяти (в C ++, где «delete» фактически освобождает память) .
Я задал похожий вопрос некоторое время назад на форуме, и вот что я получил:
От Фу-Лу @ codingforums.com:
Unset free - это его ресурсы и любые
бесплатный запрос делает то же самое (как
mysql_free_result). Да, это позволяет
коллекционер, чтобы позаботиться об этом. Но
пока процесс сбора не происходит,
он будет игнорировать любые ссылки
переменные. Так что, если проход GC
видит, что ссылка на переменную
буду игнорировать это. Если он видит, что имеет
был освобожден, он возьмет это, но если
у вас есть блок данных, который не
освобожден и не используется, чем он будет сидеть в
память до завершения скрипта (меньше
актуален в наше время на современном высоком баране
системы). Использование unset для массива
достаточно для gc, чтобы взять это. Больной
посмотрим, смогу ли я найти его в источнике,
но я бы предположил, что все HashMaps
используется ссылочными указателями C и
не ценности, поэтому сами ценности
не имеют никакого отношения к нулю
указатель в любом случае одинакового размера. Я бы
также подозреваю, что когда-то GC добирается до
хэш-карта, через которую он пройдет
и освободить каждый звал, связанный с
он и будет выполнять запись на копию для
любой отдельный указатель, связанный с
конкретная переменная (причудливый способ
говоря, что это не выпустит никакого индекса
на что ссылается другой
переменная).
http://www.codingforums.com/showthread.php?t=184164