Судьба переменных

no_santa

Снегур
Судьба переменных

Друзья, подскажите...

Допустим, присваиваем переменной значение
PHP:
$var = array('','','',...,'','');
...а потом присваиваем другое значение
PHP:
$var = 'Ёпс';
вопрос - высвобождается-ли при этом память, где находится первоначальное значение?
PHP 5.x.x
 

dimagolov

Новичок
no_santa, сформулируй проблему. если тебе интересует как работает менеджер памяти и сборщик мусора в php, то это или к Тони и в исходники php. Если у тебя конкретная проблема с лимитом памяти, то опиши ее конкретно
 

Alexandre

PHPПенсионер
переменная освобождается при unset()
если нет на переменную ссылок (у каждой переменной существует счетчик внутренних сылок, это когда переменную присваивают др переменной, то счетчик увеличивается и наоборот - когда ссылающаяся переменная либо освобождается, либо ей присваивается иное значение - то счетчик уменьшается):
$a=45; -> refcount 1;
$b=$a; -> refcount 2;
$c=$a; -> refcount 3;
$c=1; -> refcount 2;
unset(b) -> refcount 1;

как только refcount=0 - переменная при проходе сборщика мусора - удаляется

в общем у Дерика в слайдах это хорошо расписано:
References in PHP
An In-Depth Look
by Derick Rethans
 
Сверху