2010-01-22 5 views
2

В моем классе есть переменная-элемент, элементы. Периодически я переназначить массив быть значение другого, временного массива, например:Переназначение массива освобождает память, используемую им?

$temp = array(); 
$temp[] = new Object(); 
$temp[] = new Object(); 
$temp[] = new Object(); 
... etc. 

$this->items = $temp; 

Таким образом, я мог иметь утечку памяти? Переопределив значение $ this-> temp для нового значения, temp, будут ли все элементы (элементы являются объектами) изначально в $ this-> temp все еще задерживаться или они будут освобождены?

ответ

3

Это не вызовет утечку памяти. $ temp и $ this-> - это просто ссылки на один и тот же массив. Поскольку PHP является языком сбора мусора, массив будет удален (сбор мусора), когда больше нет ссылок на массив.

1

Они немного задержатся, но на PHP они будут освобождены в конце концов garbage collector.

+1

Это также относится к Java, C# и другим языкам, управляемым памятью. Обратите внимание, что это не ** - случай в C/C++, у которого нет сборщика мусора; любая память, выделенная 'new' (' malloc() '), должна быть позже освобождена' delete' ('free()') –

Смежные вопросы